首页 > 代码库 > 使用android资源

使用android资源

1.我们可以命名的资源种类有多少?

答:

res/anim/

XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象

res/drawable/

.png、.9.png、.jpg文件,它们被编译进以下的Drawable资源子类型中:

要获得这种类型的一个资源,可以使用Resource.getDrawable(id)

位图文件

9-patches(可变尺寸的位图)

为了获取资源类型,使用mContext.getResources().getDrawable(R.drawable.imageId)

注意:放在这里的图像资源可能会被aapt工 具自动地进行无损压缩优化。比如,一个真彩色但并不需要256色的PNG可能会被转换为一个带调色板的8位PNG。这使得同等质量的图片占用更少的资源。 所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(bitmap),请把图像文件放在 res/raw/目录下,这样可以避免被自动优化。

res/layout/

被编译为屏幕布局(或屏幕的一部分)的XML文件。参见布局声明(Declaring Layout)

res/values/

可以被编译成很多种类型的资源的XML文件。

注意: 不像其他的res/文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。XML元素类型控制这些资源应该放在R类的什么地方。

尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中):

      array.xml 定义数组

     colors.xml 定义color drawable和颜色的字符串值(color string values)。使用Resource.getDrawable()和Resources.getColor()分别获得这些资源。

     dimens.xml定义尺寸值(dimension value)。使用Resources.getDimension()获得这些资源。

      strings.xml定义字符串(string)值。使用Resources.getString()或者Resources.getText()获取这些资源。getText()会保留在UI字符串上应用的丰富的文本样式。

      styles.xml 定义样式(style)对象。

res/xml/

任意的XML文件,在运行时可以通过调用Resources.getXML()读取。

res/raw/

直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename

and asset.

应用语法:R.resource_type.resource_name

2.R.java是什么?

在编译资源的时候,会生成R.java,它是用来记录每个资源的ID,这样资源都可以通过R.resource_type.resource_name 来使用。除了asset除外。

3.资源引用语法和为UI控件分配ID之间有什么联系。

资源引用就是通过ID来索引具体的UI控件,所以android引用UI控件很方便。

4.生成资源ID时,会使用扩展名吗?

不会。

5.如果两个资源,扩展名不同,会怎样?

编译失败。

6.什么是原始资源和XML资源,和asset有什么不同。

原始资源:res/raw/  通常为mp3,txt等  R.raw.id

XML资源:xml  R.xml.id

asset: 直接通过assetmanager打开。不会生成id,与res同级

7.xml资源能否本地化?

TBD。

8.asset能否本地化?

不能。asset可以有任意子目录,而res下面只能有文件。应为R.java需要以此来生成id。

9.资源引用语法

R.resource_type.resource_name

10.能否预先声明ID,如何声明?

在values新建立ids.xml,把id在这里声明:

 

<item type="id" name="right">false</item>

 

使用的时候就是@id 而不是@+id

11.那些XML节点可用于创建ID

TBD。

12.Plurals资源的1和其他的意义是什么?

帮助我们识别复数的时候使用,1表示单个,other表示其他个0个,或者>=2.

16.字符串可否使用HTML字串。

可以。

<string name="welcome">Welcome to <b>Android</b>!</string>
17.如何在文中显示html字符?
 
    有时可能要创建一个样式化的文本资源,并可作为格式化串使用。通常这不能生效,
因为String.format(String, Object...)方法会去除字符串内的所有的样式信息。
解决方法是写入一段转义后的HTML标记,然后在格式化后再用fromHtml(String)恢复出这些样式。例如:(
1)将样式化的文本资源存储为转义后的HTML字符串:<resources> <string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string></resources> 在这个格式化字符串里,加入了一个<b>元素。注意左尖括号是用标记&lt转义过的HTML。(2)然后,按照通常方式格式化字符串,并调用fromHtml(String) 把HTML文本转换成带样式的文本。 Resources res = getResources();String text = String.format(res.getString(R.string.welcome_messages), username,mailCount);CharSequence styledText = Html.fromHtml(text); 因为fromHtml(String)方法会格式化所有的HTML内容,所以要确保用htmlEncode(String)对带格式化文本的字符串内所有可能的HTML字符进行转义。
比如,如果要把可能包含诸如“
<”或“&”等字符的串作为参数传给String.format(),那么必须在格式化之前对这些字符进行转义。
格式化后,再把字符串传入fromHtml(String),这些特殊字符就能还原成本来意义了。例如:
String escapedUsername = TextUtil.htmlEncode(username)Resources res = getResources();String text = String.format(res.getString(R.string.welcome_messages), escapedUsername,mailCount);CharSequence styledText = Html.fromHtml(text);

18.如何定义一个拖拽矩形:

使用.9.png格式可以

19.如何使用

在可以拖拽的方向,可以不设限设置长度。

20怎么读题res/xml下的xml

通过activity.getresource().getxml xmlpresereader

21.assetmanager左右是什么?

主要作用是读取asset

22.resource 可以读取所有的res文件,通过activity获取

23.可否在asset下创建任意子目录,可以

24.可否在res/xml下创建子目录,不可以

25.什么是资源配置修饰符?

就是使得UI通过不同的配置呈现给点的效果,比如语言。

 

资源是使用到此介绍:接下去将讲述android 4 大组件的使用。

  

 

使用android资源