在对Activity基类的封装中,我做了什么
2015-07-11 21:48
369 查看
在开发实践中,不同Activity有许多代码是重复冗余的,因此很有必要将这部分抽取出来,封装一个继承自Activity的类,命名为BaseActivity。
翻看之前写过的代码,起初,BaseActivity仅仅用来做了一个友盟统计,每个Activity的onPause与onResume方法进行了重写,基于此记录了页面使用的相关数据,代码如下:
其中,Toast是非常非常常见的一个简单提示控件,在学习后,最初是这样使用的:
一段时间过后,将这个显示Toast方法封装在Activity中,是否会更加优雅,于是乎:
在继承BaseActivity后,每次显示Toast岂不是很方便?
举一反一,其他常用UI控件同样可以进行封装。
在有的项目中,使用了像UIL第三方的图片加载库,同样可以进行封装,也在一定程度减少了很多代码量,如下图:
其实,隐藏ActionBar也可放在BaseActivity里面。
除此,还有好多,希望能起到抛砖引玉的作用,大家一起来讨论!
博主新人,还请各位大神轻拍。
翻看之前写过的代码,起初,BaseActivity仅仅用来做了一个友盟统计,每个Activity的onPause与onResume方法进行了重写,基于此记录了页面使用的相关数据,代码如下:
public class BaseActivity extends Activity { protected String Tag; protected Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Tag = this.getClass().getSimpleName(); mContext = this; } @Override protected void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPause(this); } }接下来发现,除了这个,还有很多工作可以放在BaseActivity中来做,节省大量的人力物力。
其中,Toast是非常非常常见的一个简单提示控件,在学习后,最初是这样使用的:
//需要进行显示一个Toast Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();后来发现每次写太麻烦,不如将其封装为一个工具类当中,其中借鉴各位大神的封装模式:
public class T { private T() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } public static boolean isShow = true; public static void showShort(Context context, CharSequence message) { if (isShow) Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } public static void showShort(Context context, int message) { if (isShow) Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } public static void showLong(Context context, CharSequence message) { if (isShow) Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } public static void showLong(Context context, int message) { if (isShow) Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } }每次使用时,可以少些一个参数,显示的时间略。
一段时间过后,将这个显示Toast方法封装在Activity中,是否会更加优雅,于是乎:
public class BaseActivity extends Activity { //...add new method protected void showShortToast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } }
在继承BaseActivity后,每次显示Toast岂不是很方便?
举一反一,其他常用UI控件同样可以进行封装。
在有的项目中,使用了像UIL第三方的图片加载库,同样可以进行封装,也在一定程度减少了很多代码量,如下图:
public class ImageLoaderBaseActivity extends BaseActivity { protected DisplayImageOptions options; protected ImageLoader imageLoader; protected void onCreate(Bundle savedInstanceState) { options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.bg_pic_loading) .showImageForEmptyUri(R.drawable.ic_launcher) .showImageOnFail(R.drawable.ic_launcher).cacheInMemory(true) .cacheOnDisc(true).considerExifParams(false) .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) .bitmapConfig(Bitmap.Config.RGB_565) .resetViewBeforeLoading(false)// 设置图片在下载前是否重置,复位 .build();// 构建完成 imageLoader = ImageLoader.getInstance(); imageLoader.init(ImageLoaderConfiguration.createDefault(this)); }; }
其实,隐藏ActionBar也可放在BaseActivity里面。
除此,还有好多,希望能起到抛砖引玉的作用,大家一起来讨论!
博主新人,还请各位大神轻拍。
相关文章推荐
- 算法导论-动态规划之矩阵链乘法
- fork()函数详解
- spring4学习总结以及spring整合hibernate
- mysqlslap
- mysqlslap
- Java tutorial 7
- 很详细的Log4j配置步骤
- Wildcard Matching Iteration
- 多字节字符和宽字符
- C++中Exit()与atexit()函数的使用
- mysql必知必会(四)
- Oracle 高级查询
- 虚拟机linux(Ubuntu)上网问题
- 浅析 Linux 系统调用
- 记一本关于thinkphp&&MVC的好书
- 004-For与Function进阶实战、Lazy的使用
- 大整数加法
- jQuery validationEngine 使用
- hibernate二级缓存
- 博客不定期更新