打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【新提醒】android 基础扫盲—资源管理(二)
接上次android概述---android基础扫盲(一)http://www.eoeandroid.com/forum.php?mod=viewthread&tid=157720&fromuid=564030
接下来继续,先介绍本帖主要内容:
1)资源文件概述
2)资源定义及运用
3)国际化
惯例,先废话一会,android程序中,人们大都采用XML文件静态描述一些属性,定义界面,或者存储一些参数,可以夸张地说,android程序开发之所以开发如此简便、快捷,XML占大半功劳。所以进入本帖交流学习前,先普及一些XML知识。
XML(eXtensible Markup Language)
定义:
维基百科:一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。
百度百科:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
2个百科定义大同小异,个人偏向维基,XML设计用来传送及携带数据信息,这区别于HTML,HTML语言设计面向于数据表现。
用途:
1、简化操作。Android便采用XML文件定义控件,将控件中各种属性集成,在程序开发中简化了源代码的编写。
2、实现数据分离。使用HTML实现动态数据显示,是件十分麻烦的事,每次数据改变都需要花费大量时间修改HTML。XML的独立式数据文件存储的出现,给网页开发省下不少功夫,让HTML运用重点偏向于布局和显示。
3、方便数据传输。不同系统间进行数据传送,经常会发生数据存储格式不兼容的问题,从而导致数据传送失败。XML的出现使不兼容问题成了历史,xml以纯文本格式存储数据,即使是不同系统,只要能进行xml解析,数据互送不是问题。
。。。
OK,因为本帖讲解的是android资源管理,XML知识只是个补充,就简单提交一下,如果有兴趣深入了解的道友可以去http://www.w3school.com.cn/x.asp学习,学习!w3school是个不错的学习网站!
好了,正式进入正题!
一、资源文件概述
1、资源存储
在Eclipse开发的每一个android项目都会有一个res目录跟一个assets目录,这些文件用于存储android程序资源。
res目录下可新建一些固定名字的子文件,用于保存各类XML资源。Android提供了一个资源编译工具,它会按照事先约定的目录结构,把res目录下的文件按自动编译,并在gen目录下生成R.java文件,应用程序可以通过R.java对资源文件进行引用。
assets目录比较少用,主要用于保存一些数据文件,与res目录下XML文件不同,assets文件保存的是一些二进制文件,这些文件并没有经过编译,访问时,需要通过字节流。
SD卡,手机sd卡就相当于pc机中的硬盘,我们开发软件的时候,难免会引入一些较大的应用资源,如果贪方便全塞到res或assets文件中,那恭喜你,你开发了一个空前绝后的龟速软件。Sd卡的出现使大储存软件开发成为可能。
2、资源类型
简单的概述,按资源文件类型划分,android资源可分为XML、图像和其他。如表:
Android支持的资源
目录
资源类型
描述
res\values
XML
保存字符串、颜色、尺度、类型、主题等资源,可以是任意文件名,对于字符、颜色、尺寸等信息采用key-value形式表示,对于资源、主题等资源,采用其他形式表示。
res\layout
XML
保存布局信息,一个资源文件表示一个View或ViewGroup的布局。
res\menu
XML
保存菜单资源。一个资源文件表示一个菜单(包括子菜单)
res\anim
XML
保存与动画相关信息。可以定义帧动画和补间动画
res\xml
XML
在该目录中文件可以是任意类型的XML文件,这些文件可以在运行时被读取。
res\raw
任意类型
在该目录中的文件虽然也会被封装在apk文件中,当不会被编译。该目录可以放各类型的文档、音频、视频文件。
res\drawable
图像
该目录中的文件可以是多种格式的图像文件,例如:bmp、png、gif、jpg等。该目录中的图像对分辨率要求不是很高。Aapt工具会自动优化。
asets
任意文件
跟res\raw中资源一样,不会被编译,不同的是该目录中资源文件没有生成资源ID,可以自由操作。
二、资源定义及运用
前面粗略介绍资源文件各类型,下面介绍各种资源的定义及运用:
1、简单的数值类资源
颜色资源
特性描述
定义格式
规定含有标准的XML文件头声明:<? Xml version=”1.0”  encoding=”utf-8”
根节点使用<resources>,子项为<color>
< rescources>
<color name=”colcor_name”>#color_value</color>
< /rescources>
存储路径
res/values/colors.xml  (命名任意,必须遵守一定规则)
类型匹配
R.color. color_name
资源引用
java引用:R.color.color_name
int color =  getRescources.getColor(R.color.color_name)
XML引用:@[package] color/color_name
< TextView android:textColor=”@color/color_name”/>
备注
android允许将颜色值作为资源保存于资源文件中,规定颜色值必须以#开头,支持4种表示方式:
#RGB    #ARGB    #RRGGBB   #AARRGGBB
R、G、B 为三原色红、绿、蓝,A表示透明度,即lpha。A、R、G、B的取范围都是0—255,R、G、B值越大,颜色越深,如果都为0,表示颜色为黑色,都为255,表示白色。#RGB  #ARGB  跟#RRGGBB  #AARRGGBB的区别在于前者R、G、B的取值范围是0—15,颜色值跟透明度的8位字节的高四位和低4位相同,想表示更多颜色值,则需要使用后者。
字符串
特性描述
定义格式
规定含有标准的XML文件头声明:<? Xml  version=”1.0”  encoding=”utf-8”
根节点使用<rescources>,资源声明使用<string>关键字
<rescources>
<string name=”string_name”>string_values</string>
< /rescources>
存储路径
Res/values/strings.xml
类型匹配
对应java中的CharSequence
资源引用
Java引用: CharSequence   str = R.string.string_name
XML引用:<TextView android:text=”@string/string_name”>
测量单位
特性描述
定义格式
规定含有标准的XML文件头声明:<? Xml  version=”1.0”  encoding=”utf-8”
根节点使用<rescources>,资源声明使用<dimen>关键字
<rescources>
<dimen name=”dimen_name”>string_values</dimen  >
< /rescources>
存储路径
Res/values/ dimens.xml
类型匹配
R.dimen.dimen_name   对应java中的float
资源引用
Java引用: float   dimen = Resources.getDimen(R.dimen.dimen_name)
XML引用:<TextView android:textSize=”@dimen/dimen_name>
备注
Android中已经定义了标准的度量单位:
px:表示屏幕实际的像素。如:320*480表行向320个像素,纵向480个
in:表示英寸,是屏幕的物理尺寸,一英寸=2.53cm
mm:表示毫米,屏幕的物理尺寸
pt:表示一个点,是屏幕的物理尺寸,大小为1英寸的1/72
dp:与密度无关的像素,这个是一个基于屏幕物理密度的抽象单位。
sp:与比例无关的像素,跟dp类似。
2、可绘制类资源
点阵图像资源
特性描述
定义格式
.9.png 和png(最好),jpeg(一般), gif(尽量少用)
存储路径
Res/drawable/drawable_name.xml
类型匹配
R.drawable.drawable_name   对应java中的BitmapDrawable
资源引用
Java引用: R.drawable.some_file  不需要后缀名
XML引用:<ImageView android:src=”@drawable/some_file”>
单色图像资源
特性描述
定义格式
规定含有标准的XML文件头声明:<? Xml  version=”1.0”  encoding=”utf-8”
根节点使用<rescources>,资源声明使用<drawable>关键字
<rescources>
< drawable name=”color_name”>color_values</string>
< /rescources>
存储路径
Res/drawable/colors.xml
类型匹配
R.drawable.some_name   对应java中的PaintDrawable
资源引用
Java引用: Drawable red =  Rescources.getDrawable(R.drawable.color_name);
XML引用:<TextView android:background=”@drawable/color_name”>
可拉伸图像资源
特性描述
定义格式
file_name.9.png
存储路径
Res/drawable/file_name.9.pngl
类型匹配
对应java中的NicePatchDrawable
资源引用
Java引用:R.drawable.some_name
XML引用:@drawable/some_file
备注
该类图像时使用NinePatch工具制作出来的可拉伸图像资源,主要用于绘制一些背景框,比如按键。NinePatch图像的原理是把图像的4个拐角单独保存,然后定义一个像素内容填充,从而无论图像如何放大、缩小,都不会失真。
Eclipse,XML,HTML,程序资源,View
本帖地址:   http://www.eoeandroid.com/thread-159208-1-1.html[复制链接]
相关帖子
android资源
android精品资源推荐(第二辑)
android基础之intent(二)
android 基础知识 七
android的一一些开发资源
android通讯录的基础详解
android 基础知识一
android 基础知识 十三
查看更多>>
android values xmlandroid 项目 资源管理android 资源管理android开发添加资源文件android drawable存储格式android 文件共享android apk 集成各种字符串andorid dimenres 说明android values 保存常量
分享到:
淘帖0
分享0
收藏3
好评1
差评0
相关帖子
获取手机设备的唯一码(IMIE )
如何在Android当中显示网络图片
Android 应用初始化及窗体事件(按键)的分发
android samples之Snake game(1)
如何在Android Market赚钱 part 2 - 免费app附带广告(转)
如何给MapView申请个apiKey
Git 魔法:PDF下载
如何设置隐藏标题栏和状态栏?
Android 1.5 Platform Highlights
实际开发当中碰到的小错误,提醒大家一下(TextView)
想猎鹰的狼!
回复
浪飞
8
主题
8
好友
281
积分
No.2 初级开发者
升级 
 90.5%
精华
0
帖子
43
e币
1243 元
发消息
沙发
发表于 2012-3-6 13:17:40|只看该作者
本帖最后由 浪飞 于 2012-3-18 10:09 编辑
3、动画
动画
特性描述
定义格式
Xml文件,但不需要包含标准的XML文件头文件声明,即<?xml…>
根节点可使用<alpha> <scale> <translate> <rotate>任何一种,如果动画包含多种变化,则需要使用<set>作为根节点
存储路径
Res/anim/anim_name.xml
类型匹配
对应java中的Animation
资源引用
Java引用:R.anim/anim_name
XML引用:@ anim/anim_name
备注
Android的animation由四种类型组成
XML中
alpha
渐变透明度动画效果
scale
渐变尺寸伸缩动画效果
translate
画面转换位置移动动画效果
rotate
画面转移旋转动画效果
JavaCode中
AlphaAnimation
渐变透明度动画效果
ScaleAnimation
渐变尺寸伸缩动画效果
TranslateAnimation
画面转换位置移动动画效果
RotateAnimation
画面转移旋转动画效果
4、菜单
菜单
特性描述
定义格式
Xml文件,但不需要包含标准的XML文件头文件声明,即<?xml…>
根节点可使用<menu>关键字,每个菜单项使用<item>关键字,对于菜单群组可以使用<group>关键字。
存储路径
Res/menu/some_file.xml
类型匹配
对应java中的Menu
资源引用
Java引用: R.menu.some_file
XML引用:菜单不存在XML间引用
5、布局
布局
特性描述
定义格式
规定含有标准的XML文件头声明:<? Xml version=”1.0”  encoding=”utf-8”
根节点使用任何ViewGroup的继承类,如<LinearLayout> <RelativeLayout> <FrameLayout>等。另外,在根节点内容内需要声明命名空间,比如:<LinearLayout:xmlns:android=“http//schemas.android.com/apk/res/android”>
存储路径
Res/layout/some_file.xml
类型匹配
对应java中的View
资源引用
Java引用: R.layout.some_file
XML引用:@layout/some_file
自定义视图
特性描述
定义格式
在res/values/attr.xm文件中描述该视图的属性参数,不需要包含标准的XML文件头声明
根节点使用<resources>关键字,次节点使用<declare-styleable=”class_name”>关键字,其中的name参数指定自定义视图的类名,次节点内部可添加具体的属性参数
<rescources>
<declare-styleable name=”class_name”>
<attr name=”rectColor” format=”  color”>
<attr name=”height” format=” dimension”>
<attr name=”rectColor” format=”color”>
</declare-styleable>
< rescources>
存储路径
res/layout/some_file.xml
类型匹配
对应java中取决于自定义属性的数据类型
资源引用
Java引用:R.styeable.someClass_attrName,somgClass是指自定义视图名称,attrName是自定义视图的属性参数名称。
XML引用:不能在XML中引用,不过可以在自定义组件中添加自定义属性
备注
1、添加自定义属性
<com.langfei.myView.CusRect
xmlns:lang=”http://schemas.android.com/apk/res/com.langfei.myView”>
android:layout_width=”50px”
android:layout_height=”50px”
lang:rectColor=”#ff000000”
2、视图中属性类型,即format中的选值
integer:整形数据,用于定义一些整形常量
float :浮点数,用于定义一些float属性,如anim中的scale,rotate
boolean:布尔值,true或false
reference:可引用工程中其他资源的值,比如:@string/string_name
string:字符类型
dimension:长度单位,用于指定高度,或宽度
color:颜色值
6、元数据文件资源
元数据文件资源
特性描述
定义格式
任意非XML文件
存储路径
res/raw/some_file
类型匹配
对应java中的io流
资源引用
Java引用: R..raw.some_file
XML引用:无
备注
元数据文件(raw)是一种非XML格式的任意数据,资源编译器仅为元数据文件分配一个ID,要读取元数据文件,程序只能逐字节读取。与asset资源又有所不同,raw可以同个Resources.openRawRecource(R.raw.filename)直接访问。Assets要经过assets管理器访问。
7、样式
样式
特性描述
定义格式
规定含有标准的XML文件头声明:<?Xml version=”1.0” encoding=”utf-8”>
以<resources>为根节点使用<style name=”style_name”>关键字定义一个样式,样式名是style_name,样式中的每一项<item>关键字添加。
< ?Xml version=”1.0”  encoding=”utf-8”>
<rescources>
<--parent属性指定其父样式,父样式只能有一个-->
<style name=”langText” parent=”@style/Text”>
<item name=”android:textSize”>20sp</item>
<item name=”android:textColor”>#008</item>
</style>
</rescources>
存储路径
res/values/styles.xml  文件路径和文件名都是固定的
类型匹配
Java中不直接使用样式,样式仅在xml文件中引用,如果要在程序完成同样的工作,只能定义函数,该函数负责设置视图中的每一个具体的属性。
资源引用
Java引用: 无
XML引用:@[package]style/style_name,同一个项目中,package可以省略,如果要用android内部定义的样式,需要加上命名空间如:@android:style/android_style_name
8、主题
样式
特性描述
定义格式
跟样式定义相识,不同的是,主题包含的显示属性是针对Activity
< ?Xml version=”1.0”  encoding=”utf-8”>
<rescources>
<style name=”Theme_name”>
<item name=”android:windowNoTile”>true</item>
<item name=”windowFrame”>@drawable/screen_frame</item>
<item name=”windowBackground”>
@drawable/screen_background_white</item>
<item name=”panelForegroundColor”>#FF000000</item>
<item name=”panelTextColor”>?panelForegroundColor</item>
…….
</style>
</rescources>
此定义中,@符号和问号都代表引用,前者引用过的是其他地方定义的资源对象,而问号引用的是“运行时资源对象”
存储路径
res/values/styles.xml  与样式在同一个文件中
类型匹配
Java中没有对应获取样式和主题的方法。
资源引用
Java引用:
setTheme(android:R.style.Theme_Light);
setContentView(R.layout.layout_name)
XML引用:在AndroidManifest.xml中引用
<activity android:theme=”@android:style/Theme.Dialog”>
三、国际化
程序国际化,说白了,就是我们编写的程序全世界都能用,实现这目的,其中最重要一环是软件本地化,比如:汉化。Android中开发环境已经设计好一套框架,开发者只要遵循一定的规则,将相应的语言内容加入即可!
大家参看http://blog.csdn.net/stoneson/article/details/6089320这里吧,写得挺好。
靠,终于写完了,下一个帖将介绍android用户界面,敬请期待!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android中资源文件的使用
Android执行文件apk的组成结构
Android资源文件
Android 中的资源访问
Android Drawable -- bitmap
1.8 工程相关解析(各种文件,资源访问)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服