您的位置:首页 > 移动开发 > Android开发

Android中类的反射的两个应用示例

2016-12-06 11:35 447 查看

一.类的反射来创建Fragment对象:

//定义一个Fragment的数组对象
Fragment[] fragments = new Fragment[5];

/**
* 定义五个碎片的类的名字的字符串
*/
private String[] fragmentName = {"TabMatchFragment", "TabTopicFragment", "TabMessageFragment", "TabBoxFragment", "TabMeFragment"};

/**
* 使用反射的方法来做创建实例化Fragment对象
*/
private void createFragment(Integer tag) {
//包名+类型
String name = "com.lwz.mathbox.ui.fragment.tab." + fragmentName[tag];

//newInstance是Fragment中实例化fragment的方法
Fragment fragment = (Fragment) Class.forName(name).newInstance();
//把创建的Fragment对象放到对应的Fragment数组中
fragments[tag] = fragment;
}


二.使用类的反射来获取资源文件的资源

在AndroidStudio中的mipmap资源文件夹如果存在a1.jpg文件

使用下面语句可以使用类的反射来获取资源文件的资源ID,并显示图片在页面上。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ImageView imageView = new ImageView(this);
imageView.setImageResource(getMipmapId(this, "a1"));
setContentView(imageView);
}
//获取资源ID的类反射的具体实现
public static int getMipmapId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,
"mipmap", paramContext.getPackageName());
}
}


对于第二个应用在Android程序中还是比较有用的,比如要加载几十个小图片在网页上面,如果全部的资源文件列出来是比较麻烦的。如果是使用for循环先定义图片的文件名,再使用反射来获取资源的ID是比较方便的。

三.一个Android资源文件的类反射实现后的工具类:

import android.content.Context;
public class CPResourceUtil {
//获取布局文件的ID
public static int getLayoutId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString, "layout",
paramContext.getPackageName());
}

//获取String字符串的ID
public static int getStringId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString, "string",
paramContext.getPackageName());
}

//获取drawable文件夹里面的图片的ID,这是Eclipse中的
public static int getDrawableId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,
"drawable", paramContext.getPackageName());
}

//获取mipmap文件夹里面的图片的ID,这是AndroidStudio中的
public static int getMipmapId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,
"mipmap", paramContext.getPackageName());
}

//获取values文件夹里面的资源style的ID
public static int getStyleId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,
"style", paramContext.getPackageName());
}

//获取里面的资源的ID
public static int getId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,"id", paramContext.getPackageName());
}

//获取values文件夹里面的资源color的ID
public static int getColorId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,
"color", paramContext.getPackageName());
}

//获取values文件夹里面的资源array的ID
public static int getArrayId(Context paramContext, String paramString) {
return paramContext.getResources().getIdentifier(paramString,
"array", paramContext.getPackageName());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: