有的时候我们需要通过资源名称获取资源Id,这个其实比较简单,只是做了个简单的封装,记录一下。
/**
* 资源文件工具类
* @author Jenly
*/
public class ResourcesUtils {
private static final String RES_ID = "id";
private static final String RES_STRING = "string";
private static final String RES_DRABLE = "drable";
private static final String RES_LAYOUT = "layout";
private static final String RES_STYLE = "style";
private static final String RES_COLOR = "color";
private static final String RES_DIMEN = "dimen";
private static final String RES_ANIM = "anim";
private static final String RES_MENU = "menu";
/**
* 获取资源文件的id
* @param context
* @param resName
* @return
*/
public static int getId(Context context,String resName){
return getResId(context,resName,RES_ID);
}
/**
* 获取资源文件string的id
* @param context
* @param resName
* @return
*/
public static int getStringId(Context context,String resName){
return getResId(context,resName,RES_STRING);
}
/**
* 获取资源文件drable的id
* @param context
* @param resName
* @return
*/
public static int getDrableId(Context context,String resName){
return getResId(context,resName,RES_DRABLE);
}
/**
* 获取资源文件layout的id
* @param context
* @param resName
* @return
*/
public static int getLayoutId(Context context,String resName){
return getResId(context,resName,RES_LAYOUT);
}
/**
* 获取资源文件style的id
* @param context
* @param resName
* @return
*/
public static int getStyleId(Context context,String resName){
return getResId(context,resName,RES_STYLE);
}
/**
* 获取资源文件color的id
* @param context
* @param resName
* @return
*/
public static int getColorId(Context context,String resName){
return getResId(context,resName,RES_COLOR);
}
/**
* 获取资源文件dimen的id
* @param context
* @param resName
* @return
*/
public static int getDimenId(Context context,String resName){
return getResId(context,resName,RES_DIMEN);
}
/**
* 获取资源文件ainm的id
* @param context
* @param resName
* @return
*/
public static int getAnimId(Context context,String resName){
return getResId(context,resName,RES_ANIM);
}
/**
* 获取资源文件menu的id
*/
public static int getMenuId(Context context,String resName){
return getResId(context,resName,RES_MENU);
}
/**
* 获取资源文件ID
* @param context
* @param resName
* @param defType
* @return
*/
public static int getResId(Context context,String resName,String defType){
return context.getResources().getIdentifier(resName, defType, context.getPackageName());
}
}
分享到:
相关推荐
### Android 通过图片名称获取 Drawable 目录下的图片 在Android开发过程中,有时我们需要动态地根据图片名称来加载Drawable资源。这种需求虽然不常见,但在某些特定场景下却显得尤为重要,比如实现一个自定义控件...
- 在Android SDK中,没有直接的方法可以让我们通过资源名称获取ID。但是,我们可以实现一个自定义的方法来完成这个任务。首先,我们需要遍历R.java文件(通常是通过反射来访问,因为它是编译时生成的),找到对应...
2. **资源ID获取**:使用`getResources().getIdentifier`方法来获取资源ID。 3. **资源加载**:使用`getDrawable`方法加载资源。 ##### 示例代码: ```java // 假设项目包名为 com.test.image int resID = ...
要从图片名称获取资源ID,我们需要以下几个步骤: 1. **获取资源ID**:在Android中,我们通常使用`Resources`类来获取资源ID。`Resources`对象可以从`Context`中获取,如`context.getResources()`。然后可以使用`...
通过资源名称 获得资源的id package com.example.activitylibrary; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import ...
在Android中,这通常用于动态加载类、获取资源、执行私有方法等非正常途径的操作。 在Android中,资源如图片通常被编译进APK的R类中,以ID的形式存在,例如R.drawable.image_name。然而,如果我们只知道图片的名字...
总之,`getIdentifier`方法为Android开发者提供了一种从资源名获取资源ID的途径,尤其适用于需要动态解析资源的情况。然而,为了提高应用性能,应尽可能避免频繁使用此方法,并优先考虑直接使用资源ID进行访问。
Android 中获取资源的 id 是通过 getResources().getIdentifier() 方法实现的,该方法需要三个参数:资源名称、资源类型和包名。下面是获取不同类型资源 id 的示例代码: 1.1 获取 string 资源 id String 资源是一...
这个方法允许动态获取资源ID,这对于处理动态加载的资源或者在运行时根据条件获取资源非常有用。 在Android开发中,我们还会遇到HashMap和LinkedHashMap等实现Map接口的具体类,它们提供了不同的性能和功能特点。...
2. **通过名称动态获取资源ID**: ```java ApplicationInfo appInfo = getApplicationInfo(); String imageName = "your_image_name"; int resID = getResources().getIdentifier(imageName, "drawable", ...
这里假设`getSignalIconResource()`函数返回对应信号等级的图标资源ID。你可以根据实际项目需求自定义这个函数,或者使用Android提供的标准Wi-Fi信号图标。 总的来说,获取Android中的Wi-Fi列表并根据信号强度显示...
- 使用`SubscriptionManager`类:Android 5.0(API级别21)及以上版本提供了`SubscriptionManager`,可以获取到所有可用的电话订阅信息,包括SIM卡的运营商名称。例如: ```java SubscriptionManager ...
2. **查找资源ID**:另一种方法是通过资源名称获取ID,但这需要对Android框架有更深入的理解。一般不推荐这种方式,因为效率较低且容易出错。 在Android API中,许多方法都接受资源ID作为参数,如`getDrawable(int ...
在Android开发中,`getIdentifier()` 是一个非常实用的API,它允许开发者动态地获取资源ID,而不是在代码中硬编码。这对于处理大量的资源或在运行时根据需求加载特定资源非常有用。以下是对 `getIdentifier()` 的...
如果Drawable不是从资源加载的,那么它可能是一个自定义的Drawable或者已被解码的Bitmap,这时我们就无法直接获取资源ID。在这种情况下,可能需要额外的逻辑来处理这些特殊情况。 4. **存储和应用新皮肤**: 当...
值得注意的是,反编译的资源并不总是可以直接编辑后重新打包,因为APKTool可能无法完美地保留原始的资源ID和依赖关系。在修改资源后,你需要使用`apktool b`命令重新构建APK,但有可能会出现资源冲突或编译错误,...
如果图片位于项目的`res/drawable`目录下,可以使用`Resources`对象的`getIdentifier()`方法获取资源ID,再通过`decodeResource()`方法得到`Bitmap`。首先需要获取到`ApplicationInfo`,然后根据资源类型(如`...
为了解决这个问题,我们可以使用动态获取资源ID的方法。 `ResourcesId`项目提供了一种方法,允许开发者在不依赖`R.java`的情况下动态获取资源ID。这个方法的核心在于通过`Resources`类来访问资源,而不是直接使用...
3. **通过图片名称获取资源ID** 如果只知道图片的名称而不知道其资源ID,可以通过以下方式获取: ```java String name = "图片名称"; String defType = "png"; // 或其他图片格式 String defPackage = ...