Android-----res资源文件夹

2023-12-21 13:29:45

1 res资源文件夹

res目录
assets目录
两者的区别在于:

  • res目录下所有的资源文件都会在R.java文件下生成对应的资源id,而assets目录并不会;
  • res目录我们可以直接通过资源id访问到对应的资源;而assets目录则需要我们通过AssetManager以二进制流的形式来读取!

在这里插入图片描述

1 图片资源

  • drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件
  • mipmap-hdpi:高分辨率,一般我们把图片丢这里
  • mipmap-mdpi:中等分辨率,很少,除非兼容的的手机很旧
    mipmap-xhdpi:超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡
    mipmap-xxhdpi:超超高分辨率,这个在高端机上有所体现

2 布局资源:

layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!

3 菜单资源:

  • menu:在以前有物理菜单按钮,即menu键的手机上,用的较多,现在用的并不多,菜单项相关的资源xml可在这里编写,不知道谷歌会不会出新的东西来替代菜单了~

4 values目录

  • demens.xml:定义尺寸资源
  • string.xml:定义字符串资源
  • styles.xml:定义样式资源
  • colors.xml:定义颜色资源
  • arrays.xml:定义数组资源
  • attrs.xml:自定义控件时用的较多,自定义控件的属性!

5 raw目录

raw目录:用于存放各种原生资源(音频,视频,一些XML文件等),可以通过openRawResource(int id)来获得资源的二进制流!其实和Assets差不多,不过这里面的资源会在R文件那里生成一个资源id而已

6 动画目录

动画有两种:属性动画和补间动画:

  • animator:存放属性动画的XML文件
  • anim:存放补间动画的XML文件
    ————————————————

1 建立array.xml文件

首先在res/values/ 文件夹创建新文件array.xml
注意:文件名并不是一定要为array.xml,这样写只是一个约定,安卓控件查找都是通过R文件的资源id实现的。

2 用法

2.1 用于单纯的表示一组字符串 string-array

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="home_service_title">
        <item >Elder</item>
        <item >Utiluties</item>
        <item >Hosl&amp;Cli</item>   <!-- 特殊字符要转义-->
        <item> Passport</item>
    </string-array>
</resources>

通过String[] titles =getResources().getStringArray(R.array.home_service_title);就可以会的含有文件里定义的所有数组元素.

2.2 用于单纯的表示一组数字 integer-array

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="home_service_number">
        <item >1</item>
        <item >2</item>
        <item >3</item>
        <item >4</item>
    </integer-array>
</resources>

通过int[] numbers =getResources().getIntArray(R.array.home_service_title);就可以会的含有文件里定义的所有数组元素.

2.3 用来表示一组图片位置的引用integer-array

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="home_service_image">
        <item >@mipmap/u16</item>
        <item >@mipmap/u16</item>
        <item >@mipmap/u21</item>
        <item >@mipmap/u16</item>
    </integer-array>
</resources>

通过代码:

TypedArray mTypedArray = getResources().obtainTypedArray(R.array.home_service_image);
for (int i = 0; i <getResources().getIntArray(R.array.home_service_image).length; i++) {
    int imageId=mTypedArray.getResourceId(i, R.mipmap.u23);//第一个参数为 :所取图片在数组中的索引,第二个参数为:未找到时,返回的默认值id。
}
mTypedArray.recycle();//用完记得要recycle

imageView.setImageResource(imageId);  

array文件存储极为灵活,同时也可以用来作为二维数组的引用。

getResources().getStringArray(R.array.name);//获得String[]
  getResources().getIntArray(R.array.name);//获得int[]
  TypedArray mTypedArray = getResources().obtainTypedArray(R.array.home_service_image);//获得任意类型

  mTypedArray. mTypedArray.getResourceId(int index, int defValue);//获取R.array.home_service_image)里index索引下的对象
  mTypedArray.recycle();//mTypedArray用完记得要recycle

转载链接

https://blog.csdn.net/abfdada/article/details/52127414

文章来源:https://blog.csdn.net/m0_51429482/article/details/135073667
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。