Android 资源文件

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 选项菜单

点击手机(虚拟或实体)菜单键,或者页面中的菜单按钮后出现的菜单被称为选项菜单。
基本步骤:

  1. 定义menu资源文件
  2. 重写OncreateOptionMenu()方法
  3. 方法中写入如下代码:
    MenuInflater mf = new MenuInflater(this);
    mf.inflate(R.menu.menuID, menu);
    return super.OncreateOptionMenu(menu);
    
  4. 对各个菜单项进行处理:重写OnOptionItemSelected()方法
    • 获取选中从菜单项ID,用以判断后执行不同的流程:item.getItemId()

10.2 上下文菜单

长按组件时显示的菜单。
基本步骤如下:

  1. 为组件注册上下文菜单
    1. 获取组件:findViewById()
    2. 注册:registerForContextMenu(<View v>)
  2. 添加上下文菜单
    重写onCreateContextMenu()方法
    内部代码如下:
    MenuInflater mf = new MenuInflater(this);
    mf.inflate(R.menu.menuID, menu);
    
  3. 指定菜单项被选择时所作出的处理
    重写OnOptionItemSelected()方法,return true
    • 获取选中从菜单项ID,用以判断后执行不同的流程:item.getItemId()
    switch(item.getItemId()) {
    	case:R.id.menuId:
    		// do some thing
    		break;
        ...
    }
    

11. 程序国际化

InterNationalization简称I18N,用以程序使用的语言和系统一致。
res/目录下创建相应语言的values-XXX文件夹,在每个文件中放置不同语言的资源文件即可,创建后可能Android视图下不可见,切换到project视图即可。

  • 中文简体:values-zh-rCN
  • 中文繁体:values-zh-rTW
  • 英文(美国):values-en-rUS

猜你喜欢

转载自blog.csdn.net/teolih/article/details/118759896