res文件夹中的资源

res文件夹下的目录

  • /anim
  • /animator
  • /drawable
  • /drawable-ldpi
  • /drawable-mdpi
  • /drawable-hdpi
  • /drawable-xhdpi
  • /drawable-xxhdpi
  • /drawable-xxxhdpi
  • /mipmap-mdpi
  • /mipmap-hdpi
  • /mipmap-xhdpi
  • /mipmap-xxhdpi
  • /mipmap-xxxhdpi
  • /layout
  • /color
  • /values/colors
  • /values/strings
  • /values/styles
  • /values/arrays
  • /values/dimens

具体资源使用

string字符串

字符串引用资源时,可以使用R.string(字符串)、R.array(字符串数组)、R.plurals(复数)类;
引用资源使用方法:

//字符串;
<resources>
    <string name="hello">Hello!</string>
</resources>
//字符串数组;
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
    </string-array>
</resources>
//复数;
<resources>
    <plurals
        name="plural_name">
        <item
            quantity=["zero" | "one" | "two" | "few" | "many" | "other"]
            >text_string</item>
    </plurals>
</resources>

字符串可以使用占用符,格式如%1\(d; %后面是占位符的位置,可能一个字符串中会有好几个占位符,从1开始,以此往后叠加,第一个出现的是%1\)d,那么第二个就是%2\(d;占位符位置数字之后是\),\(后面是填充数据的类型,填充数据类型有三种:d(表示整数型)、f(表示浮点型)、s(表示字符串);其中使用f(浮点型)时,如在%1\).2f中,.2代表了小数点后面保留两位小数,那么%1$.3f就代表了小数点后保留三位小数;
占用符使用方法如下:

//资源文件中res/values/strings;
<string name="textView_placeHolder">书名:%1$s,作者:%2$s,编号:%3$d,价格:%4$.2f</string>

//java代码中;
String rawString = getResources().getString(R.string.textView_placeHolder);
String afterString = String.format(rawString,"无人生还","阿加莎·克里斯蒂",1234,108.2f);
mTextViewActivityTv5.setText(afterString);

动画资源

属性动画引用res/animator,从R.animator类中访问,不过也可以引用R.anim类;
补间动画引用res/anim,从R.anim类中访问;
帧动画引用res/drawable,从R.drawable类中访问;

颜色状态列表

引用res/color,从R.color类中访问;定义基于View状态更改的颜色资源。
在这里生成的drawable类型的xml文件,根标签是<selector>,但是这里面的<item>中的drawable引用只能是使用十六进制颜色值或者使用@color引用res/values/colors中的颜色资源;如果<item>中的drawable引用的是图片或者其他的@drawable类型的资源,那么需要把这个xml文件放在res/drawable下,而不是res/color下面;

Drawable

引用res/drawable,从R.drawable类中访问;
Drawable的类型如下:
(1).BitmapDrawable:
(2).NinePatchDrawable:
(3).LayerDrawable:
(4).StateListDrawable:
(5).LevelListDrawable:
(6).TransitionDrawable:
(7).ClipDrawable:
(8).ScaleDrawable:
(9).GradientDrawable:
(10).AnimationDrawable:

layout布局

引用res/layout,从R.layout类中访问;

menu菜单

引用res/menu,从R.menu类中访问;

style风格

引用res/values/styles.xml,从R.style类中访问;

font字体

引用res/font,从R.font类中访问;

布尔值

引用res/values/bools.xml,带有布尔值的XML资源;
使用方法:

<resources>
    <bool name="screen_small">true</bool>
    <bool name="adjust_view_bounds">true</bool>
</resources>

boolean isRight = getResources().getBoolean(R.boolean.screen_small);

颜色

引用res/values/colors.xml,从R.color类中访问;带有颜色值(十六进制颜色)的xml资源;
使用方法:

<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

int color = getResources().getColor(R.color.opaque_red);

尺寸

引用res/values/dimens.xml,从R.dimen类中访问,带有维度值(带有度量单位)的xml资源;
使用方法:

<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources>

float fontSize = getResources().getDimension(R.dimen.font_size);

id

引用res/values/ids.xml,从R.id类中访问,为应用程序资源和组件提供唯一标识符;
使用方法:

<resources>
    <item type="id" name="button_ok" />
    <item type="id" name="dialog_exit" />
</resources>

<Button android:id="@id/button_ok"
    style="@style/button_style" />

整数

引用res/values/integers.xml,从R.integer类中访问,包含整数值的XML资源;
使用方法:

<resources>
    <integer name="max_speed">75</integer>
    <integer name="min_speed">5</integer>
</resources>

int maxSpeed = getResources().getInteger(R.integer.max_speed);

整数数组

引用res/values/integers.xml,从R.array类中访问,提供整数数组的XML资源;
使用方法:

<resources>
    <integer-array name="bits">
        <item>4</item>
        <item>8</item>
        <item>16</item>
        <item>32</item>
    </integer-array>
</resources>

int[] bits = getResources().getIntArray(R.array.bits);

键入数组

引用res/values/arrays.xml,从R.array类中访问,提供TypedArray(可用于drawable数组)的XML资源;
使用方法:

<resources>
    <array name="icons">
        <item>@drawable/home</item>
        <item>@drawable/settings</item>
        <item>@drawable/logout</item>
    </array>
    <array name="colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>

Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);
TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);

注意事项

(1).<selector>标签
当<selector>作为drawable资源时,放在res/drawable目录下,并且其中的<item>指定android:drawable属性时,资源只能使用@drawable;
当<selector>作为color资源时,放在res/color目录下,并且其中的<item>指定android:color属性时,资源只能是十六进制的颜色值或者使用@color;