Android应用资源---访问资源(Accessing Resources)

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 11:15 我要评论(0)

一旦在应用程序中提供了资源,就能够通过引用资源ID来使用资源。所有的资源ID都在工程的R类中被定义,R类是由aapt工具自动生成的。

当应用程序被编译是,aapt会生成R类,它包含了res/目录中的所有资源的资源ID。对于每种类型的资源,会有一个R子类(例如,R.drawable类针对所有可描画资源),并且针对每种类型的资源,都会有一个静态的整数(如,R.drawable.icon)。这个整数就是能够用于获取资源的资源ID。

尽管R类是指定资源ID的地方,但是不需要查看它来发现资源ID,一个资源ID始终由以下信息组成:

资源类型:每种资源都被分组到一个类型中,如string、drawable以及layout等。

资源名称:它既可以是除去扩展名的文件名,也可以是XML文件中android:name属性的值(如果资源是一个像字符串那样的简单值)。

有两种方法能够访问资源:

代码中:使用来自R类子类的静态整数,如R.string.hello。string是资源类型,hello是资源名称。有一些Android API能够使用这种资源格式访问资源。

在XML中:还可以使用相当于R类中定义的资源ID的特殊XML语法,如@string/hello。

string资源类型,hello是资源名称。能够在XML资源中使用这种语法,把资源中提供的任何值放到被期望的地方。

代码中访问资源

能够把资源ID作为参数传递给方法来使用资源。例如,使用setImageResource()方法给一个ImageView对象设置要使用的res/drawable/myimage.png资源:

ImageView imageView = (ImageView) findViewById(R.id.myimageview);

imageView.setImageResource(R.drawable.myimage);

也能够使用方法获取资源中的个别资源,用getResources()方法获取资源的一个示例对象。

语法

代码中引用资源的语法如下:

[<package_name>.]R.<resource_type>.<resource_name>

1.<package_name>是要定位的资源所在的包的名字(当引用的资源与代码在同一个包中时,不需要包名)。

2.<resource_type>是R的子类,代表资源的类型

3.<resource_name>既可以是不带扩展名的资源文件名,也可以是XML元素中android: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);

警告:你不需要手动的编辑R.java文件---它是在工程编译时,由aapt工具生成的,任何改变都会在下次编译时被覆盖。

在XML中访问资源

在给一些XML属性定制值时,能够引用一个既存的资源值。在创建布局资源时,会经常这样做,给weidget提供字符串和图片。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...