Android xml文件里定义并获取string array,integer array,尺寸和颜色

如何在xml中定义资源,然后在应用中通过java代码引用。

文件位置:res/values/filename.xml   

< resources> 是根元素,<string-array>元素的name属性被用作数组资源的ID, <string-array>可以包含一个或多个<item>元素。

样式如下:

< resources> 
    < string-array name = " string_array_name " > 
        < item> text_string </item> 
        < item> text_string </item> 
    </string-array> 
    <integer-array name="integer_array_name">
        < item> text_string </item> 
        < item> text_string </item> 
   </integer-array> 
</resources>

java代码获取一个字符数组:

String[] names = getResources().getStringArray(R.array.string_array_name);

java代码获取一个整型数组:

int[] names = getResources().getIntArray(R.array.integer_array_name);


1 定义字符数组|定义整型数组(一般在arrays.xml中,也可以定义在res/values/array_filename.xml,其中array_filename.xml是自定义的)

res/values/arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="animals">
        <item>tiger</item>
        <item>rabbit</item>
        <item>cat</item>
    </string-array>
    <integer-array name="count">
        <item>12</item>
        <item>22</item>
        <item>33</item>
    </integer-array>
</resources>

String[] animals = getResources().getStringArray(R.array.animals);      
int[] nums = getResources().getIntArray(R.array.count);


2 定义颜色一般放在colors.xml,也可以放在res/values/color_filename.xml,其中color_filename.xml是自定义的)

res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#000000</color>
</resources>

获取颜色:

intcolor = getResources().getColor(R.color.black);


3定义尺寸一般放在res/values/dimens.xml文件中,但也可以在res/values/dimens_filename.xml中,其中dimens_filename.xml是自定义的)

 
res/valuses/dimens.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="height">80dp</dimen>
</resources>
获取尺寸: float height = getResources().getDimension(R.dimen.height);

4定义drawable数组 

res/values/filename.xml 

 <integer-array name="background_drawable">
        <item>@drawable/female_pressed</item>
        <item>@drawable/gd_search_marker_pressed</item>
        <item>@drawable/ic_launcher</item>
        <item>@drawable/male_pressed</item>
</integer-array>

或者

<string-array name="<span style="font-family: Arial, Helvetica, sans-serif;">ackground_drawable</span><span style="font-family: Arial, Helvetica, sans-serif;">"></span>
    <item>@drawable/female_pressed</item>
    <item>@drawable/gd_search_marker_pressed</item>
    <item>@drawable/ic_launcher</item>
    <item>@drawable/male_pressed</item>
</string-array>


使用<string-array>和<integer-array>声明是一样的,都通过以下的java代码获取drawable的id。


通过java代码获取的代码如下:

 TypedArray ar = getResources().obtainTypedArray(R.array.background_drawable);
 final int len = ar.length();
 final int[] resIds = new int[len];
 for (int i = 0; i < len; i++){
       resIds[i] = ar.getResourceId(i, 0);
 }
 ar.recycle();

使用如下方式(与获取整型数组的方式获取,无法获取到正确的结果,获取的resIds的数组为{0,0,0,0})。

final int[] resIds = getResources().getIntArray(R.array.background_drawable);


然后ImageView对象可以通过setImageResource方法设置图片资源,使用方式如下:

imageView.setImageResource(resIds[0]);

另外:以上四种方式,文件名称都可以自定义,因为通过java代码查找资源的时候,使用的是属性名称不是文件名称。为了便于自身查找,有些文件放在指定的路径下,比如定义尺寸的保存到res/valuses/dimens.xml。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值