Android 资源管理

来源:互联网 发布:centos keepalived nfs 编辑:程序博客网 时间:2024/05/16 08:32

缺省资源是为了让程序在美测试过的设备上不崩溃

候选资源是为了更好的用户体验,系统运行时自动挑选最合适的资源使用。

选取和设备匹配的候选资源除了根据一些固定不变的参数,如屏幕大小,有无键盘等,还会考虑很多的动态的系统属性,如屏幕方向,当前语言,白天还是黑夜等。

Android 在系统配置中定义一个scale值,sp和dp的换算关系时sp等于dp乘以scale。通常scale是1。Android系统允许用户定义文字的尺寸,设置完成后scale的值就会发生变化。最后的效果是,在UI布局不变的情况下,字体会变化。

Android 中定义的资源类型:

布局layout: UI布局的xml文件,通过R.layout类存取。

图片 drawable : 各种格式(.png .9.png .gif .jpg)的图片资源或xml定义的绘图资源。通过R.drawable类存取。

动画 anim: 通过xml定义的控制动画的文件,通过R.anim类存取。

状态颜色列表 color state list: 定义控价不同状态的颜色组。通过R.color类存取。

菜单 menu: 定义应用的菜单项。通过R.menu类存取。

字符串 string: 定义应用中使用的字符串,通过R.string 、R.array和R.plurals类存取。

类型 style: 定义UI元素的外观和格式,通过R.style类存取。

bool: 定义bool类型的值,通过R.bool类存取。

color 定义16进制的颜色值,通过R.color类存取。

Dimmension: 定义一个带单位的维度值,通过R.dimen类存取。

ID:定义一个id。通过R.id类存取。

Integer :定义一个整型值,通过R.integer类存取。

Array: 定义一个数组,通过R.array存取。

Android 资源的制作:

assets:目录下还可以再建目录,没有限制,assets目录可以放任意文件,这些文件在编译过程中不会被改变,而是原封不动的打包进apk。

这个目录下保存的文件不能通过存取资源的方式在代码中访问到,访问这个目录下的文件更像是打开一个文件

AssetsManager am = getAssets();

InputStrream  is = am.open("filepath");

res:

下面有个raw子目录,放在raw目录下的文件也不会被改动,但是raw目录下不能再建子目录。

访问raw目录下的资源的方式和访问其他的资源是一至的。

InputStream is = getResources().openRawResource(R.id.filename);

 同时raw目录下的资源也能像其他资源一样有备选资源,能够被overlay目录中的资源覆盖掉。

animator:存放object动画的xml定义文件

anim:存放tween动画动的xml定义文件,属性动画的定义文件也可以放在这里。

color:存放状态颜色的xml定义文件。

drawable:存放图片文件 .png .9.png .jpg .gif和定义drawable的xml文件。

layout:存放用户界面的布局问价。

menu:存放菜单定义文件。

raw:存放任意不希望被android编译时改动的文件。

values:存放简单值定义的xml文件。

xml:存放任意的xml文件。这些文件可以通过Resource.getXML()在代码中打开。

Android 资源的使用:

应用程序编译后,会自动生成一个R.java文件,里面包含了所有应用定义的资源ID。

Java代码中使用资源

最简单的方式是直接传递ID。

如果希望直接获取资源,可以通过resource类来完成。Resource类的实例可以通过Context类的getResource()方法获得。Resource类中定义了大量的getXXX()方法,用来获取特定的资源。

XML文件中使用资源

在对资源XML文件中的属性赋值时可以引用另外的资源定义。

除了引用某种资源外,在xml文件中还可以直接引用style资源的属性定义。

使用公开和非公开资源:

普通应用可以使用系统的公开资源,非公开资源只能系统应用或Framework中的类使用。

如果要使用非公开资源,在java代码中要使用com.android.internal 的包名来引用。如果是在xml文件中引用未公开的资源,要在@后面加上*。

如果使用了非公开资源系统编译无法通过,要检查应用的Android.mk文件中是否有

LOCAL_SDK_VERSION := current

加上这一句,会导致系统编译时使用SDK,但是SDK中不包含非公开的资源,因此编译将失败。

图片资源的缩放:

drawable-nodpi:存放在这个目录下的图片装载进内存后,不会被缩放,所谓不缩放的意思是多少像素就是多少像素。

ldpi:120 如果希望图片的缩放效果最好,图片的尺寸必须是3的倍数。

mdpi:160如果希望图片的缩放效果最好,图片的尺寸必须是4的倍数。

hdpi: 240如果希望图片的缩放效果最好,图片的尺寸必须是6的倍数。

xhdpi: 320如果希望图片的缩放效果最好,图片的尺寸必须是8的倍数。








原创粉丝点击