Android 访问res目录下的资源


概述:

一个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 参数,您可以利用 Resources 中的方法检索资源。您可以通过Context.getResources() 获得 Resources 的实例。

		在代码中访问资源的示例:
 
// 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);
	XML中访问资源:
		
<TextView
    android: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> : 文件名称。
	
	

引用系统资源:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@android:color/secondary_text_dark_nodisable"/>

引用样式:

	?[<package_name>:][<resource_type>/]<resource_name>
	这几个参数和上面一样, 只是把@换成了?
	
<TextView
    android: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));

android.R.layout.simple_list_item_1 	这是android平台为ListView定义的布局资源。

res目录下的资源访问, 大概就这些东西。 下一篇会写 资源的类型

猜你喜欢

转载自blog.csdn.net/u011326269/article/details/51762885