加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Android--由文件名获取文件Id的两种措施

发布时间:2021-11-25 17:14:55 所属栏目:PHP教程 来源:互联网
导读:在Android中,我们经常使用资源文件的id来代替这个资源,如 R.drawable.*** , 那怎样通过文件名得到这个资源的Id的,这里介绍两种方法: 一:通过 getIdentifier (String name, String defType, String defPackage)方法。 这里有两种实现 1.name 用package:

在Android中,我们经常使用资源文件的id来代替这个资源,如 R.drawable.*** ,
 
那怎样通过文件名得到这个资源的Id的,这里介绍两种方法:
 
一:通过  getIdentifier (String name, String defType, String defPackage)方法。
 
这里有两种实现
 
1.name 用package:type/entry,那么后面两个参数可以为null.
 
2.name只写文件名,后面两参数分别为文件类型和包路径。
 
二:通过反射机制:
 
给个demo:    drawable文件夹中有一bluetooth.png图片。
 
package com.shao.acts;  
  
import java.lang.reflect.Field;  
  
import android.app.Activity;  
import android.os.Bundle;  
  
public class GetResIdActivity extends Activity {  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        //方式一:   
        int resId1 = getResources().getIdentifier("bluetooth", "drawable", "com.shao.acts");  
        if(R.drawable.bluetooth==resId1){  
        System.out.println("TRUE");  
        }  
        //方式二:   
        int resId2 = getResources().getIdentifier("com.shao.acts:drawable/bluetooth", null, null);  
        if(R.drawable.bluetooth==resId2){  
           System.out.println("TRUE");  
        }  
        //方式三:   
        int resId3  = getImage("bluetooth");  
        if(R.drawable.bluetooth==resId3){  
            System.out.println("TRUE");  
         }  
    }  
    public static int getImage(String pic) {  
          if(pic==null||pic.trim().equals("")){  
           return R.drawable.icon;  
          }  
          Class draw = R.drawable.class;  
          try {  
           Field field = draw.getDeclaredField(pic);  
           return field.getInt(pic);  
          } catch (SecurityException e) {  
           return R.drawable.icon;  
          } catch (NoSuchFieldException e) {  
           return R.drawable.icon;  
          } catch (IllegalArgumentException e) {  
           return R.drawable.icon;  
          } catch (IllegalAccessException e) {  
           return R.drawable.icon;  
          }  
         }  
}  
输出都为true.不信可以试试,O(∩_∩)O~

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读