热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

探索资源访问的学习路径与方法

本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。

Accessing Resource

译者署名:CodeGuy

     译者链接:http://www.cnblogs.com/CodeGuy/

版本:Android 3.2 r1

 

原文

         http://developer.android.com/guide/topics/resources/accessing-resources.html 

 

资源的调用

当你在应用程序中提供了某种资源后(在Providing Resources中有讨论),你就可以通过引用资源ID号来调用相关的资源。所有的资源ID号都在你工程下的R.class文件中定义好,这是由aapt工具自动生成的。

当你的应用程序被编译时,aapt工具就会自动生成R.class 文件,这个文件中包含有res/目录下所有资源的ID号。对于每一种资源类型都有一个R的子类对应着(例如:R.drawable中包含着所有drawable资源),并且对每个特定类型的所有资源都有一个静态的整型数值一一对应(例如:R.drawable.icon)。这个整型数值就是这个特定资源的ID号,你可以通过它来获取你的对应资源。

虽然R.class文件中定义着每种资源的ID号,但是你不应该也不需要到该文件下去查看某个资源的ID号。一个资源的ID号一般的组成如下:

l  资源类型: 每种资源都会被分组到一种特定的资源类型,例如string, drawable,和 layout 。要了解更多关于不同的资源类型,见Resource Types。

l  资源名,同时也是:文件名,不包括拓展名;或者是XML 中android:name属性的值,条件是这个资源是一个简单的值(例如一个字符串)。

调用某个资源有两种方法:

在代码中调用:通过使用R.class 的相应子类中的静态整形数值,例如:

R.string.hello

string 是资源类型,hello是资源名。当你通过这种方式提供资源的ID号时,有很多Android APIs 就可以调用你的相应资源了。详见:在代码中调用资源。

XML中调用:通过特殊的XML语法同样可以对应到你的R.class文件中的相关资源ID,例如:

           @string/hello

string 是资源类型,hello是资源名。你可以在任何需要使用自己提供的资源的地方,通过这种语法在XML中调用。详见:在XML中调用资源。

 

在代码中调用资源

你可以把资源ID号作为方法的参数在代码中调用该资源。例如,你可以设置一个ImageView通过调用setImageResource()方法来使用res/drawable/myimage.png 资源:

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

        imageView.setImageResource(R.drawable.myimage);

你也可以通过调用Resources中的方法来获取某一特定的资源,通过getResources()方法可以得到Resources的一个实例。

 

语法

这是在代码中引用资源的语法:

 [.]R..

l   资源所在的包名 (当你要应用自己包下的资源时,该字段不需要填写).

l   R类下对应一种特定资源类型的子类.(译者注:如R.String)

l   可以是不包含文件拓展名的资源文件名或者XML元素中android:name 属性的值(仅限简单的值,如字符串)

了解更多关于每种资源类型的信息以及如何引用它们,见Resource Types 。

 

用例

有很多方法可以接受资源的ID号作为参数,你可以通过Resources中的方法来获取某种对应的资源。你可以通过Context.getResources()方法来获得Resources类的一个实例。.

以下是在代码中调用资源的一些例子:

    // 注:通过一个drawable类型的资源给当前屏幕加载背景

    getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ;

 

    // 注:通过从Resources对象获取的字符串给Activity 设置标题,因为该方法需要一个字符序    列而不是一个资源ID号

    getWindow().setTitle(getResources().getText(R.string.main_title));

 

    // 注:给当前屏幕载入自定义布局

    setContentView(R.layout.main_screen);

 

    // 注:通过从Resources 实例获取的动画来设置一个动画幻灯片

    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,

            R.anim.hyperspace_in));

 

    // 注:通过资源ID号给TextView 类的对象设置显示文字

    TextView msgTextView = (TextView) findViewById(R.id.msg);

    msgTextView.setText(R.string.hello_message);

特别提醒: 你不能自己手动修改R.java 文件,这个文件是在你的工程被编译时由aapt工具自动生成的。所有程序中的修改都会在工程下一次编译时重写。

 

 

在XML中调用资源

你可以通过引用一个存在的资源来给一些XML的属性和元素指定具体的值。你经常会在创建布局文件的时候这样做,给你的部件提供字符串和图像。

例如,如果你添加一个按钮到你的布局中,你应该使用一个字符串资源来指定显示在按钮上的文字:

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/submit" />

(译者注:@string/submit即为你定义好的字符串资源)

 

语法

以下是在XML资源文件中引用资源的语法:

@[:]/

资源所在的包名 (当你要应用自己包下的资源时,该字段不需要填写)

R类下对应一种特定资源类型的子类.(译者注:如R.String)

可以是不包含文件拓展名的资源文件名或者XML元素中android:name 属性的值(仅限简单的值,如字符串)

了解更多关于每种资源类型的信息以及如何引用它们,见Resource Types 。

 

用例

在某些情况下你必须得在XML中使用资源(例如:给部件应用一个drawable图像),但是你可以在XML中任何可以接受简单值的地方使用资源。例如,如果你有如下包含color(颜色)资源和string(字符串)资源的资源文件:

"1.0" encoding="utf-8"?>

   "opaque_red">#f00

   "hello">Hello!

你可以使用这些定义好的资源在以下的布局文件中来设置文本的颜色和内容:

"1.0" encoding="utf-8"?>

"http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:textColor="@color/opaque_red"

    android:text="@string/hello" />

在以下情况下在引用资源时你不需要指定包名,因为这些资源在你自己的当前包中。要引用一个系统资源,你需要在引用时声明资源所在包名。例如:

"1.0" encoding="utf-8"?>

"http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:textColor="@android:color/secondary_text_dark"

    android:text="@string/hello" />

特别提醒:在需要用字符串时,你应该坚持使用字符串资源,因此你的应用程序就可以对其他语言进行本地化。关于创建可替代资源(例如本地化字符串),见Providing Alternative Resources。

你甚至可以可以在XML文件中用资源来创建别名。例如,你可以创建一个drawable类型的资源,这个资源是另一个drawable类型资源的别名:

"1.0" encoding="utf-8"?>

"http://schemas.android.com/apk/res/android"

    android:src="@drawable/other_drawable" />

这个听起来像是多余的介绍,但是在使用可替代资源的时候会很有用。了解更多关于Creating alias resources。

 

引用样式属性

一个样式属性资源允许你在当前应用的主题中引用一个属性的值。引用一个样式属性允许你通过样式化UI元素以匹配当前主题提供的标准变化来定制UI元素的外观,而不是通过提供一个硬编码的值。引用样式属性从基本上说,“使用当前主题中的属性已定义好的样式”。

引用样式属性,其名称的语法与普通的资源格式几乎是等同的,但是取代符号(@),这使用的是问号(?),资源类型部分是可选的。例如:

                    ?[<package_name>:][<resource_type>/]<resource_name>

例如&#xff0c;这个例子将介绍如何引用一个属性来设置文本的颜色以匹配系统主题的“主”文本的颜色&#xff1a;

"text"

    android:layout_width&#61;"fill_parent"

    android:layout_height&#61;"wrap_content"

    android:textColor&#61;"?android:textColorSecondary"

    android:text&#61;"&#64;string/hello_world" />

在这&#xff0c;android:textColor 属性指定了当前主题中一个样式属性的名称。Android 现在使用应用于android:textColorSecondary 样式属性的值作为该部件中android:textColor 的值。因为系统资源工具知道这个属性资源就是环境所期望的&#xff0c;所以你不需要显式地声明是那个类型&#xff08;这个类型可能是&#xff1f;android:attr/textColorSecondary&#xff09;—你可以排除掉attr类型。

 

 

调用平台资源

Android中包含有很多标准的资源&#xff0c;例如styles&#xff08;样式&#xff09;、themes&#xff08;主题&#xff09;、layouts&#xff08;布局&#xff09;等等。要调用这些资源&#xff0c;需要通过android包名来限定你的资源。例如&#xff0c;Android提供了一个布局资源&#xff0c;你可以在ListAdapter中用以罗列表项。&#xff08;译者注&#xff1a;ListAdapter是指列表适配器&#xff09;

        setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, myarray));

在这个例子中&#xff0c;simple_list_item_1是平台为ListView的表项定义的布局资源。你可以使用这个列表布局&#xff0c;而不需要自己创建表项布局。&#xff08;更多关于ListView&#xff0c;参见List View Tutorial&#xff09;。


转:https://www.cnblogs.com/zhoujn/p/4136742.html



推荐阅读
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • Android ListView 自定义 CheckBox 实现列表项多选功能详解
    本文详细介绍了在Android开发中如何在ListView的每一行添加CheckBox,以实现列表项的多选功能。用户不仅可以通过点击复选框来选择项目,还可以通过点击列表的任意一行来完成选中操作,提升了用户体验和操作便捷性。同时,文章还探讨了相关的事件处理机制和布局优化技巧,帮助开发者更好地实现这一功能。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 本文介绍了一种利用Dom4j库和JFileChooser组件在Java中实现XML文件自定义路径导出的方法。通过创建一个Document对象并设置根元素,结合JFileChooser选择目标路径,实现了灵活的XML文件导出功能。具体步骤包括初始化Document对象、构建XML结构以及使用JFileChooser选择保存路径,确保用户能够方便地将生成的XML文件保存到指定位置。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • Java Web开发中的JSP:三大指令、九大隐式对象与动作标签详解
    在Java Web开发中,JSP(Java Server Pages)是一种重要的技术,用于构建动态网页。本文详细介绍了JSP的三大指令、九大隐式对象以及动作标签。三大指令包括页面指令、包含指令和标签库指令,它们分别用于设置页面属性、引入其他文件和定义自定义标签。九大隐式对象则涵盖了请求、响应、会话、应用上下文等关键组件,为开发者提供了便捷的操作接口。动作标签则通过预定义的动作来简化页面逻辑,提高开发效率。这些内容对于理解和掌握JSP技术具有重要意义。 ... [详细]
  • 为了优化直播应用底部聊天框的弹出机制,确保在不同设备上的布局稳定性和兼容性,特别是在配备虚拟按键的设备上,我们对用户交互流程进行了调整。首次打开应用时,需先点击首个输入框以准确获取键盘高度,避免直接点击第二个输入框导致的整体布局挤压问题。此优化通过调整 `activity_main.xml` 布局文件实现,确保了更好的用户体验和界面适配。 ... [详细]
  • 深入解析 Android Drawable:第六阶段进阶指南 ... [详细]
  • APKAnalyzer(1):命令行操作体验与功能解析
    在对apkChecker进行深入研究后,自然而然地关注到了Android Studio中的APK分析功能。将APK文件导入IDE中,系统会自动解析并展示其中各类文件的详细信息。官方文档提供了详细的命令行工具使用指南,帮助开发者快速上手。本文以一个RecyclerView的Adapter代理开源库为例,探讨了如何利用这些工具进行高效的APK分析。 ... [详细]
author-avatar
瑩影貓貓05
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有