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目录下的资源访问, 大概就这些东西。 下一篇会写 资源的类型

    • 1
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值