android之resources资源

转载 2012年03月29日 20:35:34

android里的资源可以是一个文件(mp3,视频、音频)或者是一个值(一个对话框中的一个标题),这些值被绑定到一个可执行的应用程序。 

这些文件和值被绑定到应用程序,你可以修改它们,但是不需要重新编译和重新部署应用程序。 

android是一个平台,一个框架,这个框架包含许多资源,string、color、bitmap、style等。android的AAPT会自动为这些文件建立一个ID,在程序中就可以以使用这些ID来引用这些resources,如果你想改某个值,只需要修改这些resource而不需要修改源代码。 


resources的使用 
resoureces就是res目录下的那些目录和文件,常用的有: 

res/drawable/ 用来存放图片文件 
res/layout/ 用来存放布局定义文件 
res/values/ 用来存放一些变量、参数等文件 

android允许你定义多个string xml文件 这些resource位于/res/value目录下,文件名是任意的 
这是一个普通的字符串资源文件 
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, SendMessage!</string>  
  4.     <string name="app_name">SMS</string>  
  5. </resources>  


当这个文件被创建或修改了,eclipse的adt插件会自动更新你源代码中一个叫R.java的文件 
R.java 
在R.java的注释部分, 有这样一段话:“AUTO-GENERATE FILE. DO NOT MODIFY”,这个文件是自动生成的,不要修改。 
这个文件是在程序编译过程中由aapt(Android Asset Packaging Tool) 自动生成 
这个文件中的属性都是public static final的,所以可以直接在Java代码中引用,每个属性都代表一个资源,看起来就像为每个资源都定义了一个ID,然后通过这个ID来访问资源 
所有的资源文件都被编译进最后生成的二进制包中,这样能够带来很高的性能和效率 

string的定义非常简单 

Xml代码  收藏代码
  1. <string name="key">value</string>  


value可以只普通的字符串也可以是html代码,或者是包含单引号,双引号的字符串 

Xml代码  收藏代码
  1. <string name="quoted_string">"quoted'string"</string>  
  2.    <string name="double_quoted_string">\"double quotes\"</string>  
  3.    <string name="target_string">hello <b><i>android</i></b>,you are very younger!</string>  


在其他的android xml文件中引用含有html标记的值和引用普通的string一样 
Xml代码  收藏代码
  1. <TextView  android:text="@string/target_string"  
  2.     android:id="@+id/text3"   
  3.     android:layout_width="wrap_content"   
  4.     android:layout_height="wrap_content"></TextView>  

在java程序中应用这些值可以这样 
Java代码  收藏代码
  1. this.getResources().getString(R.string.target_string);  



dimension resources 

android中定义的dimension单位有以下这些 
  px: pixel(像素) 
  in:inches(英寸) 
  mm:millimeter(毫米) 
  pt:point(点) 
  dp:density密度 
  sp:刻度 
定义dimension可定义string一样 

Xml代码  收藏代码
  1. <resources>  
  2.   <dimen name="mysize_in_pixels">1px</dimen>  
  3.   <dimen name="mysize_in_dp">1dp</dimen>  
  4.   <dimen name="medium_size">100sp</dimen>  
  5.   
  6. </resources>  


你可以在style中或者定位android UI 中使用这些dimension资源 

如果在java中需要使用这些dimensions可以调用getResources方法 
Java代码  收藏代码
  1. this.getResources().getDimension(R.dimen.mysize_in_pixels);  


在ml文件中使用dimension 
Xml代码  收藏代码
  1. <TextView  android:text="@string/target_string"  
  2.     android:id="@+id/text3"   
  3.     android:layout_width="wrap_content"   
  4.     android:textSize="@dimen/medium_size"   android:layout_height="wrap_content"></TextView>  


Image resource 

android会为每个放置在res/drawable目录下的图片文件生成ID,ID就是这个图片的文件名,如果一个图片的名是sample.gif那么就会在R.java文件中的drawable下生成 
Java代码  收藏代码
  1. public static final int sample=0x7f020001;  

android支持的图片格式有:gif,jpg,png 

在xml文件中使用image resource 
Xml代码  收藏代码
  1.       
  2. <Button android:text="Button01"   
  3.     android:id="@+id/Button01"   
  4.     android:layout_width="wrap_content"   
  5.     android:background="@drawable/sample"  
  6.     android:layout_height="wrap_content"></Button>  


在java文件中通过调用getResources的getDrawable方法 
Java代码  收藏代码
  1. Drawable bitmap = this.getResources().getDrawable(R.drawable.sampe);  
  2.         Button button = (Button)findViewById(R.id.Button01);  
  3.        //给button设置一个背景图  
  4.         button.setBackgroundDrawable(bitmap);  


在android中image是drawable资源的一种类型,android还支持其他的drawable 
它叫color-drawable,它本质上是一个彩色矩形 

它的定义如下 
Xml代码  收藏代码
  1. <resources>  
  2.     <drawable name="red_rectangle">#f00</drawable>  
  3.     <drawable name="blue_rectangle">#0000ff</drawable>  
  4.     <drawable name="green_rectangle">#f0f0</drawable>  
  5. </resources>  

Java中使用color-drawable 
Java代码  收藏代码
  1. // 取得drawable  
  2. ColorDrawble redDrawable =   
  3. (ColorDrawable)getResources().getDrawable(R.drawable.red_rectnagle);  
  4. //设置textView的背景  
  5. textView.setBackground(redDrawable);  


xml中使用color-drawable 
Xml代码  收藏代码
  1. <TextView android:layout_width="fill_parent"  
  2.           android:layout_height="wrap_content"  
  3.           android:textAlign="center"  
  4.           android:background="@drawable/red_rectangle"/>  

Android 资源(Resources)访问

有许多东西用来构建一个优秀的 Android 应用程序。除了应用程序的编码,你需要关注各种各样的资源,诸如你用到的各种静态内容,如位图,颜色,布局定义,用户界面字符串,动画等等。这些资源一般放置在项目...
  • j20lin
  • j20lin
  • 2017年04月24日 15:08
  • 277

android中Resources的资源缓存机制

通过梳理下ImageView的setImageResource方法的调用流程,来看下android中Resources的资源缓存机制。 public void setImageResource(in...
  • crazy_bomber
  • crazy_bomber
  • 2017年02月03日 11:30
  • 382

Android应用资源---动画资源(Animation Resources)(三)

插补器 插补器是一个被定义在XML中的能够影响动画的变化频率的编辑器。它会对既存动画的加速、减速、重放、反弹等效果等形成影响。 使用android:interpolator属性,把插补器应用到一个...
  • FireOfStar
  • FireOfStar
  • 2012年04月18日 08:42
  • 2500

Android 资源组织和访问

计算机语言程序设计 2016-11-12 12:45 在许多Android项目中,有很多东西要用来建立一个良好的Android应用程序。除了编码应用各种资源,如:位图,颜色,布局定义,用户界...
  • u011277123
  • u011277123
  • 2016年11月14日 09:35
  • 166

android在build中配置资源路径的方式

Android中代码和资源文件是分开放置的,若想在代码中引用资源文件,就需要对资源文件的路径进行配置。由于不同资源文件放在了不同的目录下面,因此针对不同资源文件要配置上相应的资源路径。在studio中...
  • shanshan_blog
  • shanshan_blog
  • 2017年01月24日 11:35
  • 572

android学习之resources资源

2009-08-11android学习之resources资源 关键字: string android resourcesandroid里的资源可以是一个文件(mp3,视频、音频)或者是一个值(一个...
  • wayne512
  • wayne512
  • 2011年04月03日 13:18
  • 302

android学习之 resources资源

android里的资源可以是一个文件(mp3,视频、音频)或者是一个值(一个对话框中的一个标题),这些值被绑定到一个可执行的应用程序。这些文件和值被绑定到应用程序,你可以修改它们,但是不需要重新编译和...
  • yuchttp
  • yuchttp
  • 2010年05月19日 09:58
  • 582

清除android程序中的多余资源

概述 什么是多余资源?为什么需要清理?怎么清理? 正文 什么是多余资源?     答:多余资源 包括:图片、布局、raw等在res文件夹下的无用资源 为什么要清理? ...
  • RiverAM
  • RiverAM
  • 2014年09月18日 14:13
  • 10737

Resource .NET 3.0.5052 资源档编辑器(.NET资源修改器)

Resource .NET 是一个.NET资源档编辑工具,透过它能够快速的编辑更新资源档案内容。英文名是 .NET Framework Windows Resource Editor 。支援.ResX...
  • andyhebear
  • andyhebear
  • 2015年09月23日 13:17
  • 1445

Android 问题之找不到资源解决办法

今天遇到了一个问题,给我报了个找不到资源 04-28 09:34:51.591: E/AndroidRuntime(1849): FATAL EXCEPTION: main 04-28 09:34...
  • luoyang2
  • luoyang2
  • 2015年08月19日 16:32
  • 2083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android之resources资源
举报原因:
原因补充:

(最多只允许输入30个字)