我的思路是,在string.xml文件里头建一个String-array,用来配置资源的名称,例如图片,使得外部的资源改变时,通过xml的配置免得去修改源程序:
<string-array name="tab_icons">
<item>g_more_detail</item>
<item>g_reset_pw</item>
<item>g_personal_info</item>
<item>g_exit</item>
</string-array>
在某处引用该字符串数组:
Resources res = context.getResources();
String[] tab1 = res.getStringArray(R.array.tab_icons);
以下方法为资源名称与资源ID的对换:
private ArrayList<Integer> names2Ids(String[] ss, Resources res){
ArrayList<Integer> list = null;
if(ss.length>0){
list = new ArrayList<Integer>();
for(int i=0; i<ss.length; i++){
int id = res.getIdentifier(
ss[i], //资源名称的字符串数组
"drawable", //资源类型
"com.test"); //R类所在的包名
list.add(id);
}
}
return list;
}
调用该方法:
Resources res = context.getResources();
private ArrayList<Integer> drawables01 = names2Ids(tab1, res);
使用以上方法,在一定的程度上提高了程序的可维护性,但是通过res.getIdentifier()方法来获得资源的ID,在去应用资源,其运行的效率,可真要掂量掂量,引用API上的注释:此方法不推荐使用,引用资源最好使用其全局的ID!
另外,通过ID获取资源名称的方法也十分简单:getResourceName(int resid)
分享到:
相关推荐
在Android开发过程中,资源ID(Resource ID)是系统为应用中的资源分配的唯一标识符,通常以`R.`开头,用于在代码中引用这些资源。然而,在某些特殊情况下,我们可能需要修改这些ID的值。这通常是由于资源冲突、调试...
### Android 通过资源字符串获得对应ID 的方法 在Android开发过程中,经常需要处理资源文件,例如从数据库中读取图片名称后动态加载对应的图片资源。本文将详细介绍如何通过资源字符串获取其对应的资源ID,并提供两...
- 在Android SDK中,没有直接的方法可以让我们通过资源名称获取ID。但是,我们可以实现一个自定义的方法来完成这个任务。首先,我们需要遍历R.java文件(通常是通过反射来访问,因为它是编译时生成的),找到对应...
然后可以使用`getIdentifier`方法来通过资源名称和类型查找ID,如下所示: ```java int resourceId = context.getResources().getIdentifier("image_name", "drawable", context.getPackageName()); ``` 这里的...
一旦获得了资源ID,就可以按照前面介绍的方式继续获取`Drawable`或`Bitmap`对象了。 #### 三、从assets目录获取图片资源 如果图片被放置在项目的`assets`目录下,可以通过以下步骤获取: 1. **通过输入流打开图片...
通过资源名称 获得资源的id package com.example.activitylibrary; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import ...
1. **获取资源ID**:通过反射机制获取到`R.drawable`类中对应图片名称的资源ID。 2. **设置资源**:利用获取到的资源ID将图片设置到视图组件上。 #### 代码详解 下面是一段示例代码,演示了如何通过图片名称动态...
资源文件的引用方式通常有两种,一种是通过资源ID直接引用,另一种是通过资源名称引用。资源ID是在R.java文件中生成的,这个类文件包含对所有资源的引用,而资源名称的引用则是在XML文件中使用的"@[package:]type/...
Android中的资源Map通常是指Resources类的getIdentifier()方法返回的整数值与资源名称之间的映射关系。开发者可以通过资源ID(整数值)快速访问到对应的资源,而资源ID通常是在R.java文件中自动生成的。这个方法允许...
以下是对Android资源命名规范的详细解释: 1. **缩写选择**: - `ic`:代表图标(Icon),通常用于应用的图标资源。 - `bg`:代表背景(Background),用于布局或子布局的背景图像。 - `di`:代表分隔线...
【Android Layout ID Converter】是一款专为Android开发者设计的高效工具,它主要功能是帮助开发者快速地将布局文件(layout XML)中的元素ID转换为可读性更强的形式,从而提高代码的可维护性和团队协作效率。...
Android 中获取资源的 id 是通过 getResources().getIdentifier() 方法实现的,该方法需要三个参数:资源名称、资源类型和包名。下面是获取不同类型资源 id 的示例代码: 1.1 获取 string 资源 id String 资源是一...
例如,android:id="@+id/button",这里的@+id/button 便是创建了一个名为button的资源ID。 需要注意的是,@+ 的含义是在 R.java 中名为type 的内部类中添加一条记录。如果标示符已经存在,则表示引用该标示符。 @...
总之,`getIdentifier`方法为Android开发者提供了一种从资源名获取资源ID的途径,尤其适用于需要动态解析资源的情况。然而,为了提高应用性能,应尽可能避免频繁使用此方法,并优先考虑直接使用资源ID进行访问。
在Android平台上,开发一款能够开启指定名称和密码的WiFi热点的应用是一项高级功能,这涉及到对Android系统的网络服务和Wi-Fi管理API的深入理解。在这个"Android高级应用源码-Android 开启指定名称和密码的Wifi热点 ...
- `SkinPluginImpl`:这可能是实现皮肤加载功能的类,可能包含了对皮肤资源的加载逻辑和资源ID的映射方法。 - `ChangeSkinDemo`:这是一个示例项目或者类,用于展示如何切换皮肤,可能包含了启动皮肤更换过程的代码...
`res/raw`目录是Android资源系统的一部分,它允许开发者将非XML格式的资源文件(如音频、视频、文本文件等)放入应用中。这些资源会被赋予一个唯一的ID,通常以`R.raw.*`的形式表示,其中`*`是你文件的原始名称。...
在Android应用开发中,实现换肤功能是一项...这需要对Android资源系统、Context和Drawable有深入的理解,并编写适当的逻辑来处理各种情况。同时,注意性能优化,避免遍历整个布局的开销过大,确保用户体验的流畅性。