求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 

Android开发教程
Android 开发环境配置
Android 架构
Android 应用组件
Android Hello World示例
Android 资源组织和访问
Android Activity
Android Service
Android 广播接收器
Android 内容提供者
Android 碎片/片段
Android Intent过滤器
Android UI布局
Android UI控件
Android 事件处理
Android 样式和主题
Android 自定义组件
Android 拖放
Android 通知
Android 基于位置服务
Android 发送电子邮件
Android 发送短信/SMS
Android 拨打电话
发布Android应用
ndroid Alertdialog
Android Animation实例
Android音频捕获
Android音频管理器实例
Android
Android最佳实践
Android Bluetooth实例
Android Camera
Android Clipboard
Android自定义字体
Android数据备份
Android Gestures/手势
Android图片效果
Android图片切换
Android内部存储
Android JetPlayer实例
Android JSON解析器
Android加载Spinner
Android本地化
Android登录实例
Android MediaPlayer
 
 

Android 资源组织和访问
98 次浏览
21次
 捐助

在许多Android项目中,有很多东西要用来建立一个良好的Android应用程序。除了编码应用各种资源,如:位图,颜色,布局定义,用户界面字符串,动画,静态内容。在res/目录下,这些资源一直保持在各自子目录。

这一小节将学习如何组织应用程序资源,指定替代资源,并在应用程序访问它们。

组织资源

每种类型的资源在一个特定项目的 res/目录的子目录。例如,这里有一个简单的项目文件层次:

MyProject/
        src/
            MyActivity.java
       res/
          drawable/
                icon.png
            layout/
              activity_main.xml
              info.xml
          values/
                strings.xml 

res/目录中包含不同的子目录的不同资源。在这里有一个图像资源,两个布局资源和一个字符串资源文件。下表给出了详细的项目在 res/目录里面支持的资源。

替代资源

应用程序提供替代资源以支持特定的设备配置。例如,包括替代绘制资源(ie.images),针对不同的语言不同的屏幕分辨率并替代字符串资源。在运行时Android 检测当前设备的配置,并为应用程序加载适当的资源。

要指定一组资源的配置具体的替代,请遵循以下步骤:

  • 创建新目录在res/ 目录下,命名形式如[ -]。这里resources_name 是在上表中提到的资源,如layout,drawable 等限定符将指定一个单独的配置,要使用这些资源。可以查看官方文档的完整列表,限定符为不同类型的资源。
  • 在这个新的目录中保存相应的替代资源。资源文件必须被命名为默认的资源文件,如下面的例子所示的完全一样,但这些文件具有特定内容的替代。例如,虽然图像的文件名是相同的,但对高分辨率屏幕,其分辨率会很高。

下面是一个例子,它指定一个默认的屏幕和高分辨率屏幕的替代图像的图像。

MyProject/
        src/
            MyActivity.java
        res/
          drawable/
                icon.png
                background.png
          drawable-hdpi/
                icon.png
                background.png
            layout/
                activity_main.xml
                info.xml
          values/
                strings.xml 

下面是另一个例子,指定一种默认语言为阿拉伯语并指定替代布局。

MyProject/
        src/
            MyActivity.java
        res/
          drawable/
                icon.png
                background.png
          drawable-hdpi/
                icon.png
                background.png
            layout/
                activity_main.xml
                info.xml
          layout-ar/
              main.xml
          values/
                strings.xml 

访问资源

在应用程序开发中,需要访问定义的资源,无论是在代码还是在布局XML文件。下面的部分介绍了如何访问资源在这两个场景:

访问资源代码

当Android应用程序被编译时,会产生一个R类,其中包含在res/ 目录中的所有可用资源的资源ID。使用R类直接访问该子目录和资源名称或资源ID。

示例:

要访问 res/drawable/myimage.png,并设置一个ImageView 可使用下面的代码:

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
    imageView.setImageResource(R.drawable.myimage);

下面第一行代码,使用R.id.myimageview id 为myimageview定义布局文件。第二行代码使用 R.drawable.myimage 得到的图像名称myimage ,在 /res子目录下。

示例:

考虑在下一个例子 res/values/strings.xml 有以下定义:

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string  name="hello">Hello, World!</string>
    </resources>

现在,可以设置一个TextView对象msg 文字使用资源ID如下:

TextView msgTextView = (TextView) findViewById(R.id.msg);
    msgTextView.setText(R.string.hello);

示例:

考虑一个布局res/layout/activity_main.xml 如以下的定义:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
   <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello, I am a Button" />
   </LinearLayout>

这个应用程序代码的一个活动将加载此布局,在onCreate()方法如下:

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main_activity);
  }

XML中访问资源

考虑下面的XML资源res/values/strings.xml文件,包括颜色资源和一个字符串资源:

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="opaque_red">#f00</color>
        <string name="hello">Hello!</string>
    </resources>

现在,可以利用这些资源,在下面的布局文件中设置文本颜色和文本字符串如下:

<?xml version="1.0" encoding="utf-8"?>
    <EditText xmlns:android="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" />

现在,如果将再次通过前面的章节了解,例如:Hello World!应用,将有助于更好的理解本小节介绍的概念。了解在前面的小节中是如何利用各种资源的基本操作。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



98 次浏览
21次
 捐助
 

每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号