zoukankan      html  css  js  c++  java
  • Android字符串,颜色,尺寸资源的使用

    字符串、颜色、尺寸资源文件
    这三种文件位于res文件夹的values文件夹中,名称分别为strings.xml , colors.xml , dimens.xml
    下面是例子,首先来看字符串资源文件strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="app_name">My Application123</string>
        <string name="c1">F00</string>
        <string name="c2">0F0</string>
        <string name="c3">00F</string>
            ......
    </resources>

    然后是颜色资源文件colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="colorPrimary">#3F51B5</color>
        <color name="colorPrimaryDark">#303F9F</color>
        <color name="colorAccent">#FF4081</color>
        <color name="c1">#F00</color>
        <color name="c2">#0F0</color>
        <color name="c3">#00F</color>
            ......
    </resources>

    以及尺寸资源文件dimens.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="spacing">8dp</dimen>
        <dimen name="cell_width">60dp</dimen>
        <dimen name="cell_hight">66dp</dimen>
        <dimen name="title_font_size">18sp</dimen>
    </resources>


    从这几个文件可以观察到这些资源文件里定义资源的格式类似,name就是该资源的变量名称,中间就是元素的值
    <>符号中间就是资源文件类型。

    创建好资源文件后就可以使用这些资源了

    <TextView
        android:id="@+id/text01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/c1"
        android:textColor="@color/c1"
        android:textSize="@dimen/title_font_size"
        />

    从这个例子中可以看到该TextView的内容,字体颜色,字体大小都是使用资源文件而不是直接定义

    最后显示出来一个写着F00,字体颜色为红色,字体大小为18sp的TextView


    接下来是数组资源,Android并不推荐在Java代码中定义数组,因为Android允许通过资源文件定义数组资源
    来看一个例子

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="plain_arr">
            <item>@color/c1</item> //该数组里的值引用了color.xml
            <item>@color/c2</item>
            <item>@color/c3</item>
            ........
        </array>
        <string-array name="string_arr">
            <item>@string/c1</item> //该数组里的值引用了string.xml
            <item>@string/c2</item>
            <item>@string/c3</item>
            ........
        </string-array>
    </resources>

    然后布局文件中创建一个GridView

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_gravity="center_horizontal"
        >
        <GridView
            android:id="@+id/grid01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numColumns="3"/>
    </LinearLayout>

    然后在Java代码中引用资源

    public class MainActivity extends AppCompatActivity {
        String[] texts;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //通过这种方式让texts数组得到值
            texts = getResources().getStringArray(R.array.string_arr); 
            BaseAdapter ba = new BaseAdapter() {
                @Override
                public int getCount() {
                    return texts.length;
                }
    
                @Override
                public Object getItem(int position) {
                    return texts[position];
                }
    
                @Override
                public long getItemId(int position) {
                    return position;
                }
    
                @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    TextView text = new TextView(MainActivity.this);
                    Resources res = MainActivity.this.getResources();
                    //通过这种方式设置宽和高
                    text.setWidth((int) res.getDimension(R.dimen.cell_width));
                    text.setHeight((int) res.getDimension(R.dimen.cell_hight));
                    text.setText(texts[position]);
                    //使用数组资源
                    TypedArray icons = res.obtainTypedArray(R.array.plain_arr);
                    //设置背景颜色
                    text.setBackground(icons.getDrawable(position));
                    text.setTextSize(20);
                    return  text;
                }
            };
            GridView grid = (GridView) findViewById(R.id.grid01);
            grid.setAdapter(ba);
        }
    }

    综上可以看出在XML中使用资源语法格式为:@[<package_name>:]<resource_type>/<resource_name>
    而在Java代码中使用资源的格式为:<package_name>.R.<resource_type>/<resource_name>

  • 相关阅读:
    noip的一些模板(参考了神牛的博客)
    NOIP算法总结与复习
    算是一份学习计划
    RMQ-ST算法的理解与实现(C++)
    SharePoint2010母版页想要的定制
    Memoization
    mutable and immutable
    Sqlite
    PyCharm Change Font Size
    Sublime Text添加gcc编译器
  • 原文地址:https://www.cnblogs.com/vonzc/p/10459263.html
Copyright © 2011-2022 走看看