Android 资源®
文章目录
1. 字符串资源
将用在UI界面的字符串写在独立的配置文件中,而不是嵌入在布局文件或Java代码中。
- 在布局文件内配置
在res/values/strings.xml
文件中,以<string name="stringName">string content</string>
的形式在<resources>
标签内添加字符串资源 - 在布局XML中使用
属性值为:@string/stringName
- 在Java中使用
getResourecs().getString(R.string.stringName)
2. 颜色资源
用以在配置文件中预设要使用的颜色。
颜色值的定义:#
[透明度
] R
G
B
("[]"表示可省略)。如:#eee, #0000(完全透明)
- 在布局文件内配置
在res/values/colors.xml
文件中,以<color name="colorName">color </color>
的形式在<resources>
标签内添加颜色资源 - 在布局XML中使用
属性值为:@color/colorName
- 在Java中使用
[getResourecs().]getColor(R.color.colorName)
(SDK>23)时可省略“[]”中内容
3. 尺寸资源
定义尺寸。
常用尺寸单位:
-
dp:设备独立像素,不同屏幕显示效果不同,用以设置边距、组件大小
-
sp:可伸缩像素,用以设置字体大小,实际大小可根据手机系统设置变化。
配置:
- 在布局文件内配置
在res/values/dimens.xml
文件中,以<dimen name="dimenName">color </dimen>
的形式在<resources>
标签内添加尺寸资源 - 在布局XML中使用
属性值为:@dimen/dimenName
- 在Java中使用
getResourecs().getDimension(R.dimen.dimenName)
4. 布局资源
既UI界面,资源位于res/layout
文件夹中。
- 在Java中使用
设置Activity对应的布局文件:setContentView(R.layout.layoutFileName)
- 在布局XML中使用
<include layout="@layout/layoutName"></include>
5. 数组资源
在配置文件中配置数组。
- 在布局文件内配置
在res/values
文件夹中,新建arrays.xml
。数组资源有以下几种<resources>
子标签:<array>
:值可以时其他资源,如尺寸资源、字符串资源、颜色资源。<integer-array>:值为整数
<string-array>
:值为字符串
使用以上子标签同样需要指定其属性name="arrayName"
,然后再通过<item>
作为其子标签来描述数组的每一项。
举例:
<string-array name="list"> <item>string conten 1</item> <item>string conten 2</item> <item>string conten 3</item> </string-array>
- 在布局XML中使用
可以在ListView中定义属性
android:entries,属性值为:
@array/arrayName` - 在Java中使用
stringArray
(其他类型类似):
getResourecs().getStringArray(R.array.arrayName)
6. Drawable资源
图片资源或StateListDrawable
资源。资源放于res/drawable
文件夹或res/drawanle-XXdpi
文件夹
6.1 图片资源
图片类型:.png
, .jgp
, .gif
, .9.png
…
- 在布局XML中使用
属性值为:@drawable/drawableFileName
注意文件名不要有大写字母,且不能以数字开头
6.2 StateListDrawable资源
状态列表资源,一种在XML中配置的资源,在组件不同的状态(按下、抬起、得到或失去焦点状态等等),呈现不同的UI效果。
基本配置举例:
<selector>
<item android:state_XXX="true" android:color="#rgb"></item>
<item android:state_XXX="false" android:color="#rgb"></item>
<item android:state_XXX="false" android:drawanle="@drawable/drawableName"></item>
</selector>
在组件中使用:@drawable/drawableXMLFileName
7. mipmap资源
通常时应用的启动图标,存放于res/mipmap
文件夹下。
- 在布局XML中使用
属性值为:@mipmap/mipmapFileName
8. 主题资源
设置窗口的整体样式。
- 在布局文件内配置
在res/values/styles.xml
文件中,以<style name="styleName"> </style>
的形式在<resources>
标签内添加主题资源,可选的属性为parent="patent Theme"
:用以从父样式中继承样式设置(同属性时子类优先),使用<item name="指向窗口组件的属性或键">value</item>
设置所有或多个Activity
的样式。- 整个应用的窗口样式
设置AndroidManiFest.xml
文件中<application>
下的android:theme
属性,属性值为:@style/styleName
- 整个应用的窗口样式
- 在Java中使用
**在``setContentView语句前设置**:
setTheme(R.style.styleName)`
9. 样式资源
设置组件的样式,同样在res/values/styles.xml
文件中,基本配置和主题资源一致,只不过使用的属性是指向组件的。
- 在布局XML中使用
在组件中设置属性style
,值为@style/styleName
10. 菜单资源
配置菜单的样式,主要分为选项菜单和上下文菜单。
首先在res/
下新建menu
文件夹,然后所有的菜单资源文件均存放于此。
新建menu.xml
,生成根标签为<menu>
的XML文件。使用<item android:id="@+id/menuId" android:title="内容(或字符串资源)"></item>
形式定义菜单项。
10.1 选项菜单
点击手机(虚拟或实体)菜单键,或者页面中的菜单按钮后出现的菜单被称为选项菜单。
基本步骤:
- 定义menu资源文件
- 重写
OncreateOptionMenu()
方法 - 方法中写入如下代码:
MenuInflater mf = new MenuInflater(this); mf.inflate(R.menu.menuID, menu); return super.OncreateOptionMenu(menu);
- 对各个菜单项进行处理:重写
OnOptionItemSelected()
方法- 获取选中从菜单项ID,用以判断后执行不同的流程:
item.getItemId()
- 获取选中从菜单项ID,用以判断后执行不同的流程:
10.2 上下文菜单
长按组件时显示的菜单。
基本步骤如下:
- 为组件注册上下文菜单
- 获取组件:
findViewById()
- 注册:
registerForContextMenu(<View v>)
- 获取组件:
- 添加上下文菜单
重写onCreateContextMenu()
方法
内部代码如下:MenuInflater mf = new MenuInflater(this); mf.inflate(R.menu.menuID, menu);
- 指定菜单项被选择时所作出的处理
重写OnOptionItemSelected()
方法,return true
。- 获取选中从菜单项ID,用以判断后执行不同的流程:
item.getItemId()
switch(item.getItemId()) { case:R.id.menuId: // do some thing break; ... }
- 获取选中从菜单项ID,用以判断后执行不同的流程:
11. 程序国际化
InterNationalization简称I18N,用以程序使用的语言和系统一致。
在res/
目录下创建相应语言的values-XXX
文件夹,在每个文件中放置不同语言的资源文件即可,创建后可能Android
视图下不可见,切换到project
视图即可。
- 中文简体:values-zh-rCN
- 中文繁体:values-zh-rTW
- 英文(美国):values-en-rUS