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!

人工智能实验室
相关文章相关文章
  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

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

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...