您可以使用更多项目来构建优秀的Android应用程序.除了编写应用程序之外,您还可以处理各种其他资源,例如代码使用的静态内容,例如位图,颜色,布局定义,用户界面字符串,动画指令等.这些资源始终在项目的 res/目录下的各个子目录中单独维护.
本教程将向您解释如何组织应用程序资源,指定备用资源并在您的应用程序中访问它们.
MyProject/ app/ manifest/ AndroidManifest.xml java/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml
Sr.No. | 目录&资源类型 |
---|---|
1 | anim/ 定义属性动画的XML文件.它们保存在res/anim/文件夹中,并从 R.anim 类访问. |
2 | color/ 定义州的XML文件颜色列表.它们以res/color/保存,并从 R.color 类访问. |
3 | drawable/ 图像文件,如.png ,. jpg,.gif或XML文件,编译成位图,状态列表,形状,动画可绘制.它们保存在res/drawable/并从 R.drawable 类访问. |
4 | layout/ 定义用户界面的XML文件布局.它们保存在res/layout/中,并从 R.layout 类访问. |
5 | menu/ 定义应用程序菜单的XML文件,例如选项菜单,上下文菜单或子菜单.它们保存在res/menu/中,并从 R.menu 类访问. |
6 | raw/ 要保存在原始文件中的任意文件形成.您需要使用资源ID( R.raw.filename )调用 Resources.openRawResource()来打开此类原始文件. |
7 | values/ 包含简单值的XML文件,例如字符串,整数和颜色.例如,以下是您可以在此目录中创建的资源的一些文件名约定 :
|
8 | xml/ 任意XML文件可以通过调用 Resources.getXML()在运行时读取.您可以在此处保存将在运行时使用的各种配置文件. |
您的应用程序应提供替代资源以支持特定设备配置.例如,您应该为不同的屏幕分辨率和不同语言的替代字符串资源包括替代的可绘制资源(ieimages).在运行时,Android会检测当前设备配置并为您的应用程序加载适当的资源.
要为一组资源指定特定于配置的备选项,请按照以下步骤 :
以< resources_name> - < config_qualifier> 的形式在res/named中创建一个新目录.这里 resources_name 将是上表中提到的任何资源,例如layout,drawable等.限定符将指定要使用这些资源的单个配置.您可以查看官方文档以获取不同类型资源的完整资格列表.
将相应的替代资源保存在此新目录中.资源文件的名称必须与默认资源文件完全相同,如下例所示,但这些文件将具有特定于替代文件的内容.例如,虽然图像文件名称相同,但对于高分辨率屏幕,其分辨率会很高.
下面是一个指定的示例默认屏幕的图像和高分辨率屏幕的替代图像.
MyProject/ app/ manifest/ AndroidManifest.xml java/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml values/ strings.xml
下面是另一个例子,它指定了默认语言的布局和阿拉伯语的替代布局./p>
MyProject/ app/ manifest/ AndroidManifest.xml java/ 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应用程序时,
访问 res/drawable/myimage.png 并设置一个ImageView,你将使用下面的代码 :
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
这里的第一行代码使用 R.id.myimageview 来获取用id myimageview
考虑下一个示例,其中 res/values/strings.xml 具有以下定义 :
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello, World!</string> </resources>
现在,您可以使用ID msg在TextView对象上设置文本,使用资源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()方法中为Activity加载此布局,如下所示 :
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
考虑以下资源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!示例,我相信您会对本章中解释的所有概念.因此,我强烈建议您查看上一章的工作示例,并检查我如何在非常基本的级别上使用各种资源.