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;