字符串(string)资源
字符串资源文件位于res/values目录下,根元素是<resources></resources>, 使用<string></string>标记定义各字符串。
<resources>
<string name="app_name">7.1</string>
</resources>
使用字符串资源
例如在MainActivity中获取名称为introduce的字符串
getResources().getString(R.string.introduce)
在XML中,使用字符串资源如下:
<TextView
android:text="@string/title"
颜色(color)资源
在Android中,颜色值通过RGB三原色和一个透明度(Alpha)值表示,必须以“#”号开头。颜色值有以下四种形式:
#RGB:使用红、绿、蓝三原色的值来表示颜色,其中颜色值采用0~f来表示。例如,要表示红色,可以使用#f00
#ARGB:A表示透明度,透明度、红、绿、蓝均采用0~f来表示,例如,要表示半透明的红色,可以使用#6f00
#RRGGBB:这里红、绿、蓝使用00~ff来表示。
#AARRGGBB:透明度、红、绿、蓝均采用00~ff来表示。例如表示半透明的绿色,可以使用#6600ff00
颜色资源文件位于res/values目录下,根元素是<resources></resources>, 使用<color></color>标记定义各字符串。
使用颜色资源
例如,在MainActivity中,可是使用如下:
getResources().getColor(R.color.title)
在XML中,使用例子如下:
android:textColor="@color/title"
如下创建颜色的XML文件:
定义颜色:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#f00</color>
<color name="green">#0f0</color>
<color name="blue">#00f</color>
</resources>
使用颜色:
<View android:background="@color/red" android:layout_width="match_parent" android:layout_height="50dp"/>
<View android:background="@color/green" android:layout_width="match_parent" android:layout_height="50dp"/>
<View android:background="@color/blue" android:layout_width="match_parent" android:layout_height="50dp"/>
<View android:background="@android:color/background_dark" android:layout_width="match_parent" android:layout_height="50dp"/>
尺寸(dimen)资源
Android支持的尺寸单位
px:(Pixels,像素)每个px对应屏幕上得一个点。例如,320*480的屏幕在横向有320个像素,在纵向有480个像素。
in:(Inches,英寸)标准长度尺寸。屏幕对角线的长度。
pt:(points, 磅)屏幕物理长度单位,1/72英寸。
dip或dp:(设置独立像素)一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dip=1px。但随着屏幕密度的改变,dip与px的换算也会发生改变。
sp:(比例像素)主要用于处理字体的大小,可以根据用户字体大小首选项进行缩放。
mm:(Millimeters,毫米)屏幕物理长度单位。
定义尺寸资源文件
使用<dimen></dimen>标记定义各尺寸资源,通过name属性来指定尺寸资源的名称。
<dimen name="title">26dp</dimen>
使用尺寸资源
例如,在MainActivity中,可是使用如下:
getResources().getDimension(R.dimen.title)
在XML中,使用格式如下:
android:textSize="@dimen/title"
创建尺寸XML文件
定义文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="dp10">10dp</dimen>
<dimen name="dp20">20dp</dimen>
<dimen name="dp50">50dp</dimen>
<dimen name="dp100">100dp</dimen>
</resources>
使用文件:
<View android:background="@color/red" android:layout_width="@dimen/dp10" android:layout_height="50dp"/>
<View android:background="@color/green" android:layout_width="@dimen/dp20" android:layout_height="50dp"/>
<View android:background="@color/blue" android:layout_width="@dimen/dp50" android:layout_height="50dp"/>
<View android:background="@android:color/background_dark" android:layout_width="@dimen/dp100" android:layout_height="50dp"/>
使用布局(Layout)资源
在Android中,将布局资源文件放置在res/layout目录下。
例如,在MainActivity的onCreate()方法中,可以通过下面的代码指定该Activity应用的布局文件main.xml
setContentView(R.layout.activity_main);
在XML中,例如要在布局文件main.xml中,包含另一个布局文件image.xml,可以在main.xml文件中使用下面的代码:
<include layout="@layout/image"/>
数组(Array)资源
数组资源位于res/values目录下,根元素是<resources></resources>标记。 在元素中包括以下3个元素。
<array/>子元素:用于定义普通类型的数组
<string-array/>子元素:用于定义字符串数组
<integer-array/>子元素:用于定义整数数组
形式如下:
<resources>
<string-array name="listItem">
<item >程序管理</item>
<item >邮件设置</item>
<item >保密设置</item>
</string-array>
</resources>
使用数组文件
例如,在MainActivity中,要获取名为listItem的字符串数组,可以使用如下的代码:
String[] arr = getResources().getStringArray(R.array.listItem);
在XML中使用数组资源的基本语法如下:
<ListView
android:id="@+id/listview"
android:entries="@array/listItem"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
创建数组资源XML文件
Drawable资源
不仅可以使用图片作为资源,而且可以使用多种XML文件作为资源,只要这个XML文件可以被系统编译成Drawable子类的对象,那么这个XML就可以作为Drawable资源。
.9.png图片资源
9-patch图片是使用Android SDK中提供的工具Draw 9-patch生成的,该工具位于Android SDK安装目录下的tools目录中。与普通图片不同的是,使用9-patch图片作为屏幕或者按钮的背景时,当屏幕的尺寸或者按钮大小改变时,图片可自动缩放,达到不失真效果。
图片资源的访问
iv.setImageResource(R.drawable.green);
在XML文件中访问形式如下:
android:background="@drawable/green"
例子,一个按钮的背景图片,随按钮的状态而动态改变
<Button
android:id="@+id/button3"
android:background="@drawable/button_state"
android:layout_margin="5px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="单击会变色"
/>
创建一个名称为button_state.xml的StateListDrawable资源文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/red" android:state_pressed="true"/>
<item android:drawable="@drawable/green" android:state_pressed="false"/>
</selector>
不同drawable文件对应的分辨率
StateListDrawable资源
StateListDrawable资源是定义XML文件中的Drawable对象,能根据状态来呈现不同的图像。例如,一个Button按钮存在不同的状态(pressed、enabled或focused等)。
SateListDrawable资源文件同图片资源文件一样,也是放在res/drawable-xxx目录下。根元素是<selector></selector>,在该元素中可以包括多个<item></item>。每个Item元素
可是设置以下两个属性:
android:color或android:drawable:用于指定颜色或者Drawable资源
android:state_xxx:用于指定一个特定的状态,常用的状态如下:
android:state_pressed 是否按下,如一个按钮触摸或者点击。
android:state_focused 是否取得焦点,比如用户选择了一个文本框。
android:state_hovered 光标是否悬停,通常与focused state相同,它是4.0的新特性
android:state_selected 被选中,它与focus state并不完全一样,如一个list view 被选中的时候,它里面的各个子组件可能通过方向键,被选中了。
android:state_checkable 组件是否能被check。如:RadioButton是可以被check的。
android:state_checked 被checked了,如:一个RadioButton可以被check了。
android:state_enabled 能够接受触摸或者点击事件
android:state_activated 被激活(这个麻烦举个例子,不是特明白)
android:state_window_focused 应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了