资源是外部文件(既非代码文件),被代码使用,并且在编译时被编译到你的应用程序中,android 支持的资源,包括XML,PNG,JPNG文件,XML文件会由于其所描述的内容不同而形式不同。
资源从原代码中被抽取出来,基于效率考虑,XML文件被编译成二进制、可以快速加载的形式。字符串,同样被压缩为一种更富效率的存储形式。对于android 程序开发,需要它时知道去那里找这些资源就可以了。
(一)资源
android 资源系统了解应用程序中所有非代码资源。使用Resources类访问程序中的资源。一个应用程序的资源在编译时被编译器编译到应用程序中的二进制文件中,要使用一个资源,你必须把安装源文件树中的正确位置,并编译到你应用程序中,作为编译过程的一部分,每个资源的标记都会被生成,在原代码中可要使用这些标记-允许编译器验证应用程序中的代码和定义的资源是否匹配。那如何创建和使用资源呢!
(二)创建资源
android 支持字符串、位图以及其他很多中类型的资源。每一种资源的语法、格式以及存放的位置,都会根据其类型的不同而不同。一般来自三种文件:XML(除位图和raw之外的任何文件)、位图文件(图像)以及raw文件(eg:声音.........),事实上,XML文件也有两种不同类型:被原封不动地编译进包内的文件和被aapt 用来产生资源的文件。这里有一个每种资源类型的列表,包括文件格式、文件描述以及XML文件类型的细节。
在项目中的res/目录的适当的子目录中创建和保存资源文件。Android 有一个资源编译器(aapt),它依照资源所在的子目录及其格式对其进行编译。eg:
目录 资源类型
res/anim XML文件,它被编译进frame by frame animation或者tweened animation
res/drawable .png,.jpg文件;问图文件;9-patches(可边尺寸的位图) 被编译进Drawable 资源自中,使用Resource.getDrawable(id),在这个目录下也可以创建xxx.xml文件来定义特殊的图像
例如:app_icon_background.xml
<selector>
<item android:state_selected="true" android:drawable="@drawable/icon_highlight_square"/>
<item android:drawable="@color/transparent"/>
</selector>
res/layout 编译为屏幕布局(或屏幕的一部分)的XML文件
res/values array.xml ;color.xml;dimens.xml;strings.xml ;styles.xml
res/xml 任意的XML文件,在运行时可以通过调用Resources.getXML()读取。
res/raw 直接复制到设备中的任意文件。他们无须编译,添加到应用程序编译产生的压缩文件中。调用Resources.openRawResource(), 参数是资源的ID,即R.raw.somefilename
资源被编译进最终的APK文件中。Android 创建了一个封装类,叫做R,在代码中使用他来引用这些资源。R包含了根据资源文件的路径和名称命名的子类。
全局资源说明(Global Resource Notes)
1、一些资源允许你定义颜色值。android 接受的颜色值可以使用多种web样似的形式-以下集中包含十六进制常数的形式:#RGB,#ARGB,#RRGGBB、#AARRGGBB
2、所有颜色之支持设置透明度(alpha channel value),前两位的十六进制数指定了透明了。0在透明度值是全透明。默认值是不透明。
(三)使用资源
1、代码中使用资源-如何在你代码中对调用资源实例化
R.resource_type.resource_name 或 android.R.resource_type.resource_name
2、从其他资源中引用资源-可以从其他资源中应用资源。重用资源中的公共资源。
@[package:]type/name (@string/hello_world|@android:drawable/opaque_red)
Context.getResource()获得与应用程序相关的Resource实例。图像资源的引用和风格的统一, eg: <application android:name="CalendarApplication"
android:label="@string/app_label" android:icon="@drawable/app_icon"
android:taskAffinity="android.task.calendar">
...............
................
.................
</application>
主要是通过android:icon="@drawable/app_icon"中的@drawable/app_icon应用资源,这种技巧还可以创建资源之间的引用。eg:可以创建新的drawable 资源作为已存在资源的别名。
<?xml version = "1.0" encoding = "utf-8"?>
<resources>
<drawable id = "my_background">@android:drawable/theme2_background</drawable>
</resources>
</xml>
3、支持针对交替配置的交替资源-根据主机硬件的语言或显示配置指定加载不同的资源。
super.onCreate(icicle);
setContentView(R.layout.main);
这看似很简短的两个java 语句,其实要去深刻的理解他的作用,然后在扩展开来,里面的内容,真的很多,很多,
4、应用主题属性,另外一种资源允许引用当前主题中的属性值。这个属性值只能在样式资源和XML属性中使用;他允许你通过将他们改变为当前主题提供的标准化来改变UI元素的外观,而不是提供具体的值。
引用格式如下:
?[namespace:]type/name和“@”, 也是可选的!
使用系统资源:android.R.type.id
5、支持对替换(Alternate)语言和配置的替换资源
MyApp/
res/
values-en/
.
.
.
.
.
.
Android 支持几种类型的限定服,每一个都有不同的值。把他们连接在资源文件名称的后面,使用短横线(“-”)隔开。可以为每一个文件夹名称添加多个限定符,但是必须按照这里列出的顺序排列,
eg:
drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480x320/
比较典型的是,你只需指定的要定义资源的配置选项,可以放弃列表中的任何值,但同时要保证生下的值仍然保持列表中的顺序
MyApp/
res/
drawable-en-rUS-finger/
drawable-port/
drawable-port-160dpi
drawable-qwerty

更多相关文章

  1. Android手机软件汉化教程---第三课 xml文件汉化
  2. 【Android软件】ES文件浏览器:Android资源管理器
  3. [置顶] Android本地文件管理器思路解析一一增删改查具体实现
  4. 【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对
  5. AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名

随机推荐

  1. C#如何使用Socket发送HTTP/HTTPS请求实例
  2. C#制作ActiveX控件中如何调用海康SDK的问
  3. C#中关于反射和dynamic最佳组合的示例分
  4. C#中面向对象设计七个原则介绍
  5. 有关C#工厂模式简单讲解
  6. 介绍C#中的堆和栈
  7. 介绍C#中的接口
  8. 比较C#中值类型和引用类型的区别
  9. C#/.NET易错的几点
  10. Sql的执行过程说明