/res/values 目录详解

/res/values 下可以放置的文件有:

  • strings.xml 
  • arrays.xml
  • dimens.xml
  • colors.xml
  • styles.xml

2、arrays.xml

详解利用arrays.xml文件存放数组,并读取的过程。

方式1:

    <string-array name="proto">
        <item>刀兵</item>
        <item>龙骑</item>
        <item>黑暗圣堂</item>
        <item>电兵</item>
    </string-array>
    <string-array name="zerg">
        <item>小狗</item>
        <item>飞龙</item>
        <item>刺蛇</item>
    </string-array>
    <string-array name="terran">
        <item>机枪兵</item>
        <item>护士MM</item>
        <item>幽灵</item>
        <item>大舰</item>
    </string-array>
 1 int[] resIds = new int[] { R.array.proto, R.array.zerg, R.array.terran };
 2 String[] armType = new String[] { "神族兵种:", "虫族兵种:", "人族兵种:" };
 3 getArms(resIds, armType);
 4 
 5 private void getArms(int[] ids, String[] typeNames) {
 6     int len1 = ids.length;
 7     String[][] arms = new String[len1][];
 8 
 9     for (int i = 0; i < len1; i++) {
10         String[] armsType = this.getResources().getStringArray(ids[i]);
11         int len2 = armsType.length;
12         arms[i] = new String[len2];
13         System.out.println(typeNames[i]);
14         for (int j = 0; j < len2; j++) {
15             arms[i][j] = armsType[j];
16             System.out.print(arms[i][j] + " ");
17         }
18         System.out.println();
19     }
20 }

输出结果:

    

方式2:

    <string-array name="planet">
        <item>太阳</item>
        <item>水星,金星,地球,火星,木星,土星,天王星,海王星</item>
        <item>哈雷,恩克</item>
    </string-array>
 1 String[] planetType = new String[] { "恒星:", "行星:", "彗星:" };
 2 getPlanets(planetType);
 3 
 4 private void getPlanets(String[] typeNames) {
 5     String[] ids = this.getResources().getStringArray(R.array.planet);
 6     int len1 = ids.length;
 7     String[][] planets = new String[len1][];
 8     for (int i = 0; i < len1; i++) {
 9         String[] planetArr = ids[i].split(",");
10         int len2 = planetArr.length;
11         planets[i] = new String[len2];
12         System.out.println(typeNames[i]);
13         for (int j = 0; j < len2; j++) {
14             planets[i][j] = planetArr[j];
15             System.out.print(planetArr[j]+" ");
16         }
17         System.out.println();
18     }
19 }

输出结果:

    

方式3:

    <string-array name="china">
        <item>@array/guangdong</item>
        <item>@array/beijing</item>
        <item>@array/yunnan</item>
    </string-array>
    <string-array name="guangdong">
        <item>广州</item>
        <item>深圳</item>
    </string-array>
    <string-array name="beijing">
        <item>北京</item>
    </string-array>
    <string-array name="yunnan">
        <item>昆明</item>
        <item>大理</item>
        <item>丽江</item>
    </string-array>

  

 1 String[] province = new String[] { "广东:", "北京:", "云南:" };
 2 getCities(province);
 3 
 4 private void getCities(String[] names) {
 5     TypedArray typedArray = getResources().obtainTypedArray(R.array.china);
 6     int len1 = typedArray.length();
 7     String[][] cities = new String[len1][];
 8     for (int i = 0; i < len1; i++) {
 9         int resArrID =  typedArray.getResourceId(i, 0);
10         String[] cityArr = this.getResources().getStringArray(resArrID);
11         int len2 = cityArr.length;
12         cities[i] = new String[len2];
13         System.out.println(names[i]);
14         for (int j = 0; j < len2; j++) {
15             cities[i][j] = cityArr[j];
16             System.out.print(cityArr[j]+" ");
17         }
18         System.out.println();
19     }
20 }

输出结果:

    

 对于不同数据类型的读取:

    <string-array name="FourPoets">
            <item>唐伯虎</item>
            <item>祝枝山</item>
            <item>文征明</item>
            <item>徐祯卿</item>
    </string-array>
<integer-array name="capability"> <item>99</item> <item>96</item> <item>90</item> <item>85</item> </integer-array> <array name="sex"> <item>男</item> <item>女</item> </array> CharSequence[] name = getResources().getTextArray(R.array.FourPoets); int[] capability = getResources().getIntArray(R.array.price); String[] sex = getResources().getStringArray(R.array.sex);

  默认使用<array>标签,item里面内容需以String数组形式读出。

原文地址:https://www.cnblogs.com/mulisheng/p/4833202.html