Android Resource篇--- II 访问资源文件

原创 2015年11月20日 21:28:45

资源已经有了, 那么我们怎么用它们呢?系统给我们提供了一个资源列表, 我们可以在源文件和XML文件中通过该列表获取到它们.


R类就是编译的时候, aapt工具根据res目录下的资源文件生成的, 它相当于一个资源列表, 我们可以通过访问R类中的对象来访问资源文件,大大方便了我们的使用.

 

资源类型:

资源有两种类型, 一种是文件型, 比如drawable下的图片资源. 另一种是简单数值资源, 比如string类型, 定义它们的时候需要在res/value/string.xml中定义成这个样子:

<resources>
    <string name="app_name">MyTest</string>
</resources>

访问资源:

访问资源有两种情况, 一种是在Java文件中通过代码访问, 另一种是在XML文件中通过相应语法访问. 这两种情景在开发的时候都会经常用到.

1.      在代码中访问资源:

在代码中访问资源的语法是: [<package_name>.]R.<resource_type>.<resource_name>,其中:

package_name: 是资源所在的包名, 当访问自己包内的资源时, 不需要加包名.

resource_type: 资源的类型, 比如layout,drawable, string等.

resource_name: 资源的名称. 是不加扩展名的文件名, 或者简单资源的android:name项.

比如访问图片资源res/drawable/icon.png, 就可以使用R.drawable.icon来获取到该资源的ID. 而访问简单数值资源的时候,则需要用资源的name值, 比如访问上例中的”MyTest”字符串资源, 只需要使用R.string.app_name即可. 在Android开发的过程中有大量的方法需要使用资源ID, 栗子:

// Load a background for the current screen from a drawable resource
getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ;

// Set the Activity title by getting a string from the Resources object, because
//  this method requires a CharSequence rather than a resource ID
getWindow().setTitle(getResources().getText(R.string.main_title));

// Load a custom layout for the current screen
setContentView(R.layout.main_screen);

// Set a slide in animation by getting an Animation from the Resources object
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
        R.anim.hyperspace_in));

// Set the text on a TextView object using a resource ID
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello_message);

另外我们永远都不应该去手动修改R.java文件, 每次编译的时候, 该文件都会被重新生成.

 

2.      在XML文件中访问资源文件

在XML文件中访问资源文件的语法是@[<package_name>:]<resource_type>/<resource_name>.用法跟在代码里相似, 三个字段的含义没有变化, 只有符号发生了变化. 比如我们需要指定一个按钮上的文字:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/submit" />

如果在代码里访问那么就是R.string.submit, 在XML文件中访问就是@string/submit.

除了我们自己添加的资源, Android系统还有自带资源可以供我们使用. 比如Android为ListView提供了布局: simple_list_item_1, 可以避免我们自己定义布局, 我们访问系统资源的时候, 就需要指定包名了:

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));

我们在使用字符串的时候, 应该保持使用字符串资源的习惯, 这样的话在应对多语言环境的时候, 会方便不少.


参考: http://developer.android.com/guide/topics/resources/accessing-resources.html




版权声明:本文为博主原创文章,未经博主允许不得转载。

Android资源文件的管理

android程序中,不管是普通的drawable、anim、color、layout、value等类型的资源文件,还是raw类型的资源文件,或者asset类型的资源文件,所有的资源文件都是通过Ass...
  • mountains2001
  • mountains2001
  • 2016年07月12日 22:16
  • 1381

Android资源文件之创建与访问

如果你想将某一资源用于多种设备配置(但是不想作为默认资源提供), 则无需将同一资源放入多个备用资源目录中。相反,可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名。 注: 并非...
  • u012908775
  • u012908775
  • 2016年07月15日 16:36
  • 1609

Android 中资源文件的命名规范整理

在 eclipse 的工程中,res 目录有默认几项 resource,如 drawable, layout,menu,values 其余还有 res/anim/用来放置动画 res/xml/用...
  • dongwuming
  • dongwuming
  • 2013年10月16日 18:41
  • 2678

Android Resource 怎样加载资源文件(3)

当要求一个你提供了选择中的资源,安卓根据当前设备配置,在运行时候进行选择。为了证明安卓如何选择资源,建设下面的图片目录每个都包含不同版本的相同图片。 * drawable/ * drawable...
  • caohang103215
  • caohang103215
  • 2017年03月22日 16:17
  • 188

java 读取资源文件最详细解读

java项目中,经常需要将资源文件打包放在项目中,然后在项目中去读取对应的文件。以下面的一个项目为例,项目的目录结构如下:├── conf │ └── krb5.conf ├── pom.xml ...
  • bitcarmanlee
  • bitcarmanlee
  • 2017年05月01日 18:27
  • 3235

Android 资源 id 转换成 Uri 的小助手

public static final String ANDROID_RESOURCE = “android.resource://”; public static final String FOR...
  • waa_0618
  • waa_0618
  • 2017年02月07日 16:03
  • 1268

Android插件化(三)加载插件apk中的Resource资源

Android加载插件apk中的Resource资源简介如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源码中发现,它有一个私有方...
  • NUPTboyZHB
  • NUPTboyZHB
  • 2015年12月27日 21:34
  • 5695

c# winfrom资源文件的调用和路径全解

System.Diagnostics命名空间 : string str1 =Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的e...
  • snlei
  • snlei
  • 2013年07月24日 14:55
  • 11619

详解Android插件化开发-资源访问

动态加载技术(也叫插件化技术),当项目越来越庞大的时候,我们通过插件化开发不仅可以减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。     通常我们把安卓资源文件...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年10月05日 15:32
  • 5177

java加载资源文件方式总结

在java中,加载文件资源可用如下四种方式:    1、通过本类的class类的getResource方法  // 同一包下 URL u0 = ClassGetResourceTest.clas...
  • zhoutaohenan
  • zhoutaohenan
  • 2013年01月05日 09:25
  • 7277
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Resource篇--- II 访问资源文件
举报原因:
原因补充:

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