标签:this 相同 简单 设置图 sage tag false bundle end
在开发实践中,不同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();
}
}举一反一,其它经常使用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));
};
}除此,还有好多。希望能起到抛砖引玉的作用,大家一起来讨论!
博主新人,还请各位大神轻拍。
标签:this 相同 简单 设置图 sage tag false bundle end
原文地址:http://www.cnblogs.com/cynchanpin/p/6977815.html