美文网首页小技巧,大智慧Android知识Android开发
Android 中 从arrays.xml读取资源(string

Android 中 从arrays.xml读取资源(string

作者: rabbitknight | 来源:发表于2017-04-15 11:38 被阅读317次

    我的博客:http://southtree.cn

    引用arrays.xml中的String资源

    在res/values文件夹下创建一个数组,创建的数组如下所示

    arrays.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="places">
            <item>安徽宏村</item>
            <item>安徽黄山</item>
            <item>福建武夷山</item>
            <item>福建霞浦</item>
            <item>甘肃省敦煌市鸣沙山和月牙泉</item>
            <item>开平碉楼</item>
            <item>广西阳朔</item>
            <item>贵州黄果树瀑布</item>
            <item>海南南山海上观音像</item>
            <item>海南省亚龙湾</item>
        </string-array>
    </resources>
    

    Java代码中获取数组并使用

    在java中使用的代码:

    private String[] items;
    items = getResources().getStringArray(R.array.places);
    

    引用arrays.xml中的Drawable资源

    如果数组中的资源为图片资源:

    <string-array name="pic">
        <item>@drawable/p1</item>
        <item>@drawable/p2</item>
        <item>@drawable/p3</item>
        <item>@drawable/p4</item>
        <item>@drawable/p5</item>
        <item>@drawable/p6</item>
        <item>@drawable/p7</item>
        <item>@drawable/p8</item>
        <item>@drawable/p9</item>
        <item>@drawable/p10</item>
    </string-array>
    

    获取并使用Drawable资源

    则java中获取的代码为:

    TypedArray pic = getResources().obtainTypedArray(R.array.pic);
    //!!使用方法1:
    Drawable drawable = pic.getDrawable(i); //获取第i个Drawable类型的值。
    //!!使用方法2:
    int id = pic.getResourcesId(i,-1);      //获取第i个drawable 的id,默认为-1
    

    很重要的 注意!

    注意!在使用drawable的时候,我起初采用上述的方法1来进行从arrays.xml中读取数组,但是我发现,在我做Activity跳转的时候,传递Drawable类型是很头疼的事情!采用Intent的方法传递,并不支持Drawable类型。为此你就需要先将Drawable类型转化为Bitmap类型,通过Bitmap来进行传递。然鹅,Bitmap仅仅支持40kb的内容!并且伤心的是我的图超过40kb,果然AS就报错了- -,所以就在想要不要用数据流啥的传输。另外一个页面里解一下。
    等等,
    既然我的drawable已经是在数组中了,我为何不用drawable的id来进行传输?传递个int类型总可以了吧。而且是int类型不需要传递这么长的数据来耗费资源。
    所以就找到了getResourceId(int i,int def);这个函数。为此,我要再次强调一下这个方法的使用。

    //①从array数组读取自己想要的数组资源,这里是pic,并赋值给TypedArray类型的pic
    TypedArray pic = getResources().obtainTypedArray(R.array.pic);
    //②使用getResourceId方法获取id,i为第i个元素,-1为默认值。传给id
    int id = pic.getResourceId(i,-1);
    //③为ImageView设置图片
    img.setImgResources(id);
    

    相关文章

      网友评论

        本文标题:Android 中 从arrays.xml读取资源(string

        本文链接:https://www.haomeiwen.com/subject/xuynattx.html