码迷,mamicode.com
首页 > 其他好文 > 详细

在对Activity基类的封装中,我做了什么

时间:2015-07-11 22:55:23      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:android   baseactivity   

在开发实践中,不同Activity有许多代码是重复冗余的,因此很有必要将这部分抽取出来,封装一个继承自Activity的类,命名为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里面。

除此,还有好多,希望能起到抛砖引玉的作用,大家一起来讨论!

博主新人,还请各位大神轻拍。


版权声明:本文为博主原创文章,未经博主允许不得转载。

在对Activity基类的封装中,我做了什么

标签:android   baseactivity   

原文地址:http://blog.csdn.net/changhuiyuanh/article/details/46844569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!