您的位置:首页 > 移动开发 > Android开发

Android 访问res目录下的资源

2016-06-26 15:24 162 查看
概述:一个android应用会包含很多的资源文件,比如图片, 文字, 样式, 布局等等文件。 这篇博客主要记录下android中访问res目录下的资源文件。res 目录下通常有 anim, animation, drawable, mipmap, layout, menu, raw, values 等子目录。相信这些文件目录对android开发者来说是再熟悉不过了。下面我们来总结一下,这些文件的具体的访问方式,和应该注意的地方, 让我们更清楚的认识,为什么应该这么用。在android开发中, 经常使用这些资源文件, 最多的应该也是通过 R.<resourceType>.<filename>的方式吧。这个R是应用编译时, aapt自动生成的,这个R文件的位置,在app/build/intermediates/classes/<packagename>/R.class 。可以看到res下面的资源都在R.class中, 以静态类, 静态常量存在。我们使用这些资源的时候,就是通过这个R类应用的。访问资源的方式有两种:1. 在Java代码中使用:R.drawable.abc_ab_share_pack_mtrl_alpha 这样就可以应用到这个abc_ab_share_pack_mtrl_alpha 资源文件了。2. 在XML文件中应用:  @drawable/abc_ab_share_pack_mtrl_alpha 用例:为ImageView设置图片
ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.app_logo);
语法:
[<package_name>.]R.<resource_type>.<resource_name>
<package_name> : 表示包名, 如果是应用的资源来自自己的资源包, 则不需要。
<resource_type> : 表示R子类。
<resource_name> : 资源文件名。
有许多方法接受资源 ID 参数,您可以利用 [code]Resources
 中的方法检索资源。您可以通过
Context.getResources()
 获得 
Resources
 的实例。[/code]
在代码中访问资源的示例:
// Load a background for the current screen from a drawable resource[code]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 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);[/code]
在XML中访问资源:
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello"/>
语法:
@[<package_name>:]<resource_type>/<resource_name>
<package_name> : 包名, 同一包中的资源不需要。
<resource_type> : R中的子类。
<resource_name> : 文件名称。
引用系统资源:
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android:color/secondary_text_dark_nodisable"/>
引用样式:
?[<package_name>:][<resource_type>/]<resource_name>
这几个参数和上面一样, 只是把@换成了?
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="?android:textColorSecondary"/>
访问平台资源:Android 包含许多标准资源,例如样式、风格主题和布局。要访问这些资源,请通过 
android
 包名称限定您的资源引用。例如,您可以将Android提供的布局资源用于 
ListAdapter
 中的列表项:
setListAdapter
(new
ArrayAdapter
<String>(this, android.R.layout.simple_list_item_1, myarray));[/code]
android.R.layout.simple_list_item_1 这是android平台为ListView定义的布局资源。
res目录下的资源访问, 大概就这些东西。 下一篇会写资源的类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: