您还可以使用许多其他项来构建良好的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. | Directory & Resource Type |
---|---|
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/ 可以通过调用 Resources.getXML()在运行时读取任意XML文件,您可以在此处保存各种配置文件,这些文件将在运行时使用。 |
资源结构
您的应用程序应提供替代资源以支持特定的设备配置,如,您应该包括用于不同屏幕分辨率的备用可绘制资源(即images)和用于不同语言的备用字符串资源。在运行时,Android将检测当前的设备配置,并为您的应用程序加载适当的资源。
下面是为默认屏幕指定图像和为高分辨率屏幕指定替代图像的示例。
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
下面是另一个示例,该示例指定默认语言的布局和阿拉伯语的替代布局。
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应用程序时,会生成一个 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 的ImageView。第二行代码使用 R.drawable.myimage 获取名称为 myimage 的图像,该图像位于/res 下的drawable子目录中。
考虑下一个示例,其中 res/values/strings.xml 具有以下定义-
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello, World!</string> </resources>
现在您可以使用资源ID在ID为msg的TextView对象上设置文本,如下所示-
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资源
考虑以下资源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!示例,那么无涯教程相信您会对本章中介绍的所有概念有更好的理解。
参考链接
https://www.learnfk.com/android/android-resources.html
标签:xml,png,res,无涯,访问,Resources,Android,drawable,资源 From: https://blog.51cto.com/u_14033984/7279177