当提供了在应用中的资源,可以通过资源ID来应用他。所有的资源ID定义在项目R类中,这个类通过aapt工具自动产生。当应用编译的时候,aapt产生包含所有资源res/目录ID的R类。每个资源类R型有子类(R.drawable),并且任意资源类型有静态整数(R.drawable.icon).这个整数id能够检索到你的资源信息。
* 虽然资源R类是资源ID实现的,凡是你不用查找资源ID,资源ID通常是由下列组成:
1. 资源类型:每个资源都是一类,如string,drawable,layout.
2. 资源名称:文件名称或者是android:name属性(string)
* 获得资源的方法
1. 代码中
2. 在xml文件中@string/hello
在代码中
可以传递资源ID作为方法的采参数在代码中,例如在ImageView中res/drawable/myimage.png
ImageView imageView=(ImageView)findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);
也可以用过getResource()方法获得Resources
语法
在代码资源文件在中语法格式:
[<package_name>.]R.<resource_type>.<resource_name>
package_name:自己的包可以省略
resource_type:R类中的子类
resource_name:要么是文件名,要么是android:name属性在xml中
下面一些用法
有很多方法可将资源ID作为参数,并且你能够获得资源通过Resources中的方法,Context.getResources()获得Resources的实例。
下面一些使用的实例:
//load a background for the current screen from a drawable getWindow().setBackgroundDrawableResources(R.drawable.my_background); //set the activity title by getting a string from the Resources this method requires a CharSequence rather than a resources ID getWindow().setTitle(getResource().getText(R.string.main_hello)); load a custom layout for the current screen setContentView(R.layout.main_screen); //set a slide in animation by getting an Animation from the Resources object mFlipper.setInAnimation(AnimationUtils.loadAnimation(this.R.anim.hyperspace_in)); //set the text on a TextView object using a resource ID TextView msgTextView=(TextView)findViewById(R.id.msg) **注意** 不能手动更改R类文件,是aapt文件生成的。
从xml中获得资源
可以定义一些数值xml属性和元素使用,使用已经存在的资源。经常在创建布局文件来提供组建的字符串和图片。
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/submit"/>
语法
@[<package_name>:]<resource_type>/<resource_name>
package_name:资源文件所在包,当来自本身的包可以省略。
resource_type:R类的子类资源
用法情形
@android:color/secondary_text_dark
参考样式属性
一个样式水性那个资源允许你参考当前应用的主题属性值。参考属性值可以定制UI元素和当前主题相匹配,而不是写死的数值。参考属性值必须:使用定义在这个主题中的属性值。
为参数属性值,名称语法基本和普通资源格式一样,但是用“?”,并且资源种类部分也是可选的。
?[<package_name>:][<resource_type>/]<resource_name>
* 例如,下面列举如何参考属性去设置文本颜色匹配系统主题原始字体的颜色。
<EditText id ="text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="?android:textColorSecondary"
android:text="@string/hello_world"/>
* 其中android:textColor属性实现房前主题样式属性名称。安卓用android:textColorSecondary作为android:textColor数值。因为系统资源工具知道这个属性这个上下文要用,不需要详细写出类型(?android:attr/textColorSecondary)
获得平台资源文件
安卓包含很多的标准资源,styles,themes,layouts.获得这些资源,用android包名称作资源参考。
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myarrary));