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()); } }
相关文章推荐
- Android - 如何将两个/多个应用放到一个进程中去?
- 关于android创建快捷方式会启动两个应用的问题(一)
- 解析android创建快捷方式会启动两个应用的问题
- Android获取网络图片应用示例
- Unity3d AndroidJNI两篇应用示例。羽化的文章。
- java反射全接触(原理,示例和应用)
- Android中Java反射技术的使用示例
- android com.panoramagl应用示例,增加俯仰视角控制
- Android Socket 应用示例
- Android中Java反射技术的使用示例
- 关于android创建快捷方式会启动两个应用的问题(二)
- Android引路蜂地图开发示例:第一个地图应用
- android 反射应用
- Android之WiFi开发应用示例
- 同时安装调试两个相同的应用 android:package 用来区分两个应用程序
- Android 中的Intent在两个Acitvity传递数据示例
- phonegap 开发入门 PhoneGap官方网站上有详细的入门示例教程,这里,我针对使用PhoneGap进行Android移动应用的开发对其官网的Get Started进行一些介绍、补充。 Ste
- 分享开发Android应用需注意的两个要点
- android 反射的应用
- Android中Java反射技术的使用示例