在對Activity基類的封裝中,我做了什麽
阿新 • • 發佈:2017-06-10
例如 stream color tin ase throw this reset ack
接下來發現,除了這個,還有非常多工作能夠放在BaseActivity中來做,節省大量的人力物力。
每次使用時,能夠少些一個參數,顯示的時間略。
在繼承BaseActivity後,每次顯示Toast豈不是非常方便?
事實上,隱藏ActionBar也可放在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); } }
當中,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基類的封裝中,我做了什麽