Android Resource篇--- II 访问资源文件
来源:互联网 发布:semantic ui 怎么 js 编辑:程序博客网 时间:2024/04/18 16:14
资源已经有了, 那么我们怎么用它们呢?系统给我们提供了一个资源列表, 我们可以在源文件和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 resourcegetWindow().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 IDgetWindow().setTitle(getResources().getText(R.string.main_title));// Load a custom layout for the current screensetContentView(R.layout.main_screen);// Set a slide in animation by getting an Animation from the Resources objectmFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in));// Set the text on a TextView object using a resource IDTextView 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));
我们在使用字符串的时候, 应该保持使用字符串资源的习惯, 这样的话在应对多语言环境的时候, 会方便不少.
- Android Resource篇--- II 访问资源文件
- Android Resource篇--- I 存放资源文件的规则
- 资源访问 - Resource
- Android Resource 怎样加载资源文件(3)
- spring学习笔记(2)文件资源访问接口Resource
- spring资源访问Resource类
- Android - 资源(resource)
- Android - 使用资源(resource)
- Android 资源(resource)
- Android资源文件之创建与访问
- Android把res/raw的资源转化为Uri形式访问(android.resource://)
- Spring之资源访问利器Resource
- 资源之访问Resource(三)
- spring3笔记4-Resource资源访问
- Android Resource 提供资源(2)
- 接上篇,访问资源文件,获取内容
- java访问资源文件
- java访问资源文件
- 我的linux笔记
- 【java】匿名内部类
- Eclipse下如何安装genymotion
- Basic CalculatorII
- 基于dede的一个自定义采集器
- Android Resource篇--- II 访问资源文件
- 提问的智慧
- 苹果Mac安装Dr.com
- STL中set的相关运用
- hdu 1856 并查序 特殊优化
- python初级了解
- 我的dubbo学习笔记
- [leetcode] 149. Max Points on a Line
- Unity3D 关于刚体(RigitBody)与碰撞体(Collider)的探索