论坛首页 移动开发技术论坛

android工程下的文件资源类型

浏览 10370 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-08-19   最后修改:2010-10-31

 

一个android工程中,有各种类型的资源文件,大致可以分为以下几种:

1、  颜色 #RGB #ARGB #RRGGBB #AARRGGBB

颜色资源应该位于<resourses></resourses>标签下

路径res/values/colors.xml 名字可以随意

定义<color name=”cname”>value</color>

使用 Resourse.getValues.getColor

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="white">#FFFFFF</color>

<color name="black">#000000</color>

</resources>

2、  字串

字串资源应该位于<resourses></resourses>标签下

路径res/values/strings.xml

定义<String  name=”sname”>value</String>

使用 Resourse.getValues.getString

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, ResrouseTestActivity!</string>

    <string name="app_name">ResrouseTest</string>

</resources>

 

3、  图片

图片资源一般使用png格式,使用其他格式的会出现各种问题,貌似不支持gif格式的图片,可是使用Movie来播放gif格式的图片

路径res/drawable

可以直接存放图片也可以是xml等配置文件(一般用于自定义组件)

使用 getDrawable

 

4、  图片的颜色

位于res/values/my_drawable.xml名字随意

 <?xml version="1.0" encoding="utf-8"?>

<resources>

<drawable name="solid_red">#FF0000</drawable>

</resources>

定义用于填充一个组件的颜色值,即给view设置背景色。用法和drawable下的图片一样,其实没多少意义,使用颜色定义就ok了,目前我是这样认为的,可能有更好的优点,不过我没发现罢了,嘿嘿,continue...

5、  单位资源

单位资源应该位于<resourses></resourses>标签下

路径res/values/dimen.xml 名字可以随意

使用和Stringcolor类似

<?xml version="1.0" encoding="utf-8"?>

<resources>

<dimen name="dimen_name">2px</dimen>

<dimen name="dimen_px">5px</dimen>

<dimen name="dimen_pt">3pt</dimen>

<dimen name="dimen_dp">3dp</dimen>

</resources>

6、  Nine-patch(可以拉伸的小图片)

支持图片的拉伸

   貌似就是所谓的png图片文件资源,图片在应用view的背景时,如果被设为background则会随view的大小变化做相应的拉伸和收缩,像ImageView这类设置src图片则不随view变化,按其自身大小显示部分或全部!

7、  菜单

菜单即可以从代码中实现也可以在资源文件中配置,这里就是要描述一下第二种
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item   
        android:id="@+id/previous"   
        android:title="@string/previous"   
        android:enabled="false"  android:icon="@android:drawable/ic_media_previous"/>
        <item   
        android:id="@+id/play_pause"   
        android:title="@string/play"   
        android:icon="@android:drawable/ic_media_play"/>
    <item   
        android:id="@+id/next"   
        android:title="@string/next"   
        android:icon="@android:drawable/ic_menu_next"/>
</menu>

8、  Layout布局

这个就是你经常看到的与用户交互的界面的xml文件,就是各个view的排列和嵌套,没什么好说的啦

9、  风格和主题、

风格主要是指view的显示风格 res/values/filename.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
   <style name=”SpecialText” parent=”@style/Text”>
   <item name=”android:textSize”>18sp</item>
   <item name=”android:textColor”>#008</item>
</style>
</resources>

主题主要针对Activity, 可以在Android Manifest中定义的<application><activity>元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View.风格可以自己定义也可以使用程序自带的或是继承已有的风格。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item name="windowBackground">@drawable/screen_background_white</item>
<item name="panelForegroundColor">#FF000000</item>
<item name="panelBackgroundColor">#FFFFFFFF</item>
<item name="panelTextColor">?panelForegroundColor</item>
<item name="panelTextSize">14</item>
<item name="menuItemTextColor">?panelTextColor</item>
<item name="menuItemTextSize">?panelTextSize</item>
</style>
</resources>

 

10、              动画

动画资源分为两种,一是实现图片的translatescalerotatealpha四种变化。还可以设置动画的播放特性;另一种是帧动画,逐帧播放设置的资源

先说一下第一种

Res/anim/filename.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">               
                    <translate android:interpolator="@android:anim/accelerate_interpolator"
                                         android:fromXDelta="0" android:toXDelta="200" android:fromYDelta="0"
                                         android:toYDelta="180" android:duration="2000" />
                    <scale android:interpolator="@android:anim/accelerate_interpolator"
                                         android:fromXScale="1.0" android:toXScale="2.0" android:fromYScale="1.0"
                                         android:toYScale="2.0" android:pivotX="150%" android:pivotY="150%"
                                         android:duration="2000" />
                    <alpha android:fromAlpha="1.0" android:toAlpha="1.0"
                                         android:duration="@android:integer/config_mediumAnimTime" />
                    <rotate ....各个属性></rotate>
                    <Interpolator >可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等</Interpolator>
</set>  

具体参数的用法,大家可以自己查资料

下面是第二种资源

<animation-list xmlns:android=”http://schemas.android.com/apk/res/android”
android:oneshot=”true”>
<item android:drawable=”@drawable/rocket_thrust1″ android:duration=”200″ />
<item android:drawable=”@drawable/rocket_thrust2″ android:duration=”200″ />
<item android:drawable=”@drawable/rocket_thrust3″ android:duration=”200″ />
</animation-list>

 

 

<script src="/javascripts/tinymce/plugins/javaeye/langs/zh.js" type="text/javascript"></script> rif;">1. 相关文件夹介绍     在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。在后面会介绍如何读取assets文件夹的资源!
     res文件夹里面的多个文件夹的各自介绍(来自网上的Android开发指南中文版内容):

目录Directory

资源类型Resource Types

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可能会被转换为一个带调色板的8PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(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/

assets/

直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。assets下也可以放置任意文件,使用Activity.this.getAssets().open("519.txt");打开

 

 

 

 

 

 

 

 

 

 

 

 

   发表时间:2010-08-19  
不错  这个总结下确实很有必要
0 请登录后投票
   发表时间:2010-08-20  
zhs2472 写道
不错  这个总结下确实很有必要

有不全的或是不对的请指正、补充...
0 请登录后投票
   发表时间:2010-10-25  
看这个总结感觉不错~
0 请登录后投票
   发表时间:2010-10-27   最后修改:2010-10-27
支持一下下..
"res/assets/"这里错了哟...assets没有在res文件下面的...
0 请登录后投票
   发表时间:2010-10-31  
改正了,嘿嘿,tks

zhang247124629 写道
支持一下下..
"res/assets/"这里错了哟...assets没有在res文件下面的...

0 请登录后投票
   发表时间:2010-11-21  
assets 里面的文件,像给webView之类用的时候,要用全路径吧?似乎是 file:///android_asset/[assets下的路径,如Demo.html]
0 请登录后投票
   发表时间:2011-01-18  
总结得非常好,学习了
0 请登录后投票
   发表时间:2011-01-18  
elena_java 写道

 

一个android工程中,有各种类型的资源文件,大致可以分为以下几种:

1、  颜色 #RGB #ARGB #RRGGBB #AARRGGBB

颜色资源应该位于<resourses></resourses>标签下

路径res/values/colors.xml 名字可以随意

定义<color name=”cname”>value</color>

使用 Resourse.getValues.getColor

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="white">#FFFFFF</color>

<color name="black">#000000</color>

</resources>

2、  字串

字串资源应该位于<resourses></resourses>标签下

路径res/values/strings.xml

定义<String  name=”sname”>value</String>

使用 Resourse.getValues.getString

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, ResrouseTestActivity!</string>

    <string name="app_name">ResrouseTest</string>

</resources>

 

3、  图片

图片资源一般使用png格式,使用其他格式的会出现各种问题,貌似不支持gif格式的图片,可是使用Movie来播放gif格式的图片

路径res/drawable

可以直接存放图片也可以是xml等配置文件(一般用于自定义组件)

使用 getDrawable

 

4、  图片的颜色

位于res/values/my_drawable.xml名字随意

 <?xml version="1.0" encoding="utf-8"?>

<resources>

<drawable name="solid_red">#FF0000</drawable>

</resources>

定义用于填充一个组件的颜色值,即给view设置背景色。用法和drawable下的图片一样,其实没多少意义,使用颜色定义就ok了,目前我是这样认为的,可能有更好的优点,不过我没发现罢了,嘿嘿,continue...

5、  单位资源

单位资源应该位于<resourses></resourses>标签下

路径res/values/dimen.xml 名字可以随意

使用和Stringcolor类似

<?xml version="1.0" encoding="utf-8"?>

<resources>

<dimen name="dimen_name">2px</dimen>

<dimen name="dimen_px">5px</dimen>

<dimen name="dimen_pt">3pt</dimen>

<dimen name="dimen_dp">3dp</dimen>

</resources>

6、  Nine-patch(可以拉伸的小图片)

支持图片的拉伸

   貌似就是所谓的png图片文件资源,图片在应用view的背景时,如果被设为background则会随view的大小变化做相应的拉伸和收缩,像ImageView这类设置src图片则不随view变化,按其自身大小显示部分或全部!

7、  菜单

菜单即可以从代码中实现也可以在资源文件中配置,这里就是要描述一下第二种
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item   
        android:id="@+id/previous"   
        android:title="@string/previous"   
        android:enabled="false"  android:icon="@android:drawable/ic_media_previous"/>
        <item   
        android:id="@+id/play_pause"   
        android:title="@string/play"   
        android:icon="@android:drawable/ic_media_play"/>
    <item   
        android:id="@+id/next"   
        android:title="@string/next"   
        android:icon="@android:drawable/ic_menu_next"/>
</menu>

8、  Layout布局

这个就是你经常看到的与用户交互的界面的xml文件,就是各个view的排列和嵌套,没什么好说的啦

9、  风格和主题、

风格主要是指view的显示风格 res/values/filename.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
   <style name=”SpecialText” parent=”@style/Text”>
   <item name=”android:textSize”>18sp</item>
   <item name=”android:textColor”>#008</item>
</style>
</resources>

主题主要针对Activity, 可以在Android Manifest中定义的<application><activity>元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View.风格可以自己定义也可以使用程序自带的或是继承已有的风格。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item name="windowBackground">@drawable/screen_background_white</item>
<item name="panelForegroundColor">#FF000000</item>
<item name="panelBackgroundColor">#FFFFFFFF</item>
<item name="panelTextColor">?panelForegroundColor</item>
<item name="panelTextSize">14</item>
<item name="menuItemTextColor">?panelTextColor</item>
<item name="menuItemTextSize">?panelTextSize</item>
</style>
</resources>

 

10、              动画

动画资源分为两种,一是实现图片的translatescalerotatealpha四种变化。还可以设置动画的播放特性;另一种是帧动画,逐帧播放设置的资源

先说一下第一种

Res/anim/filename.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">               
                    <translate android:interpolator="@android:anim/accelerate_interpolator"
                                         android:fromXDelta="0" android:toXDelta="200" android:fromYDelta="0"
                                         android:toYDelta="180" android:duration="2000" />
                    <scale android:interpolator="@android:anim/accelerate_interpolator"
                                         android:fromXScale="1.0" android:toXScale="2.0" android:fromYScale="1.0"
                                         android:toYScale="2.0" android:pivotX="150%" android:pivotY="150%"
                                         android:duration="2000" />
                    <alpha android:fromAlpha="1.0" android:toAlpha="1.0"
                                         android:duration="@android:integer/config_mediumAnimTime" />
                    <rotate ....各个属性></rotate>
                    <Interpolator >可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等</Interpolator>
</set>  

具体参数的用法,大家可以自己查资料

下面是第二种资源

<animation-list xmlns:android=”http://schemas.android.com/apk/res/android”
android:oneshot=”true”>
<item android:drawable=”@drawable/rocket_thrust1″ android:duration=”200″ />
<item android:drawable=”@drawable/rocket_thrust2″ android:duration=”200″ />
<item android:drawable=”@drawable/rocket_thrust3″ android:duration=”200″ />
</animation-list>

 

 

<script src="/javascripts/tinymce/plugins/javaeye/langs/zh.js" type="text/javascript"></script> rif;">1. 相关文件夹介绍     在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。在后面会介绍如何读取assets文件夹的资源!
     res文件夹里面的多个文件夹的各自介绍(来自网上的Android开发指南中文版内容):

目录Directory

资源类型Resource Types

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可能会被转换为一个带调色板的8PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(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/

assets/

直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。assets下也可以放置任意文件,使用Activity.this.getAssets().open("519.txt");打开

 

 

 

 

 

 

 

 

 

 

 

 

 

0 请登录后投票
   发表时间:2011-03-21  
很好,很有用
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics