热门标签 | 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



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • MacOS上高效的SVN管理工具Cornerstone安装指南
    本文详细介绍如何在MacOS上安装和配置高效SVN管理工具Cornerstone,涵盖其主要功能和优化后的性能提升。 ... [详细]
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社区 版权所有