基類Activity

1:包含功能

Activity統(tǒng)一管理

沉浸式菜單

EventBus注冊(cè)和解除

Activity跳轉(zhuǎn)方法抽取

返回鍵監(jiān)聽方法抽取

2:代碼

public abstract classMActivityextendsActivity {

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

MActivityManager.getInstance().pushActivity(this);

setTheme(R.style.TranslucentTheme);//沉浸式

requestWindowFeature(Window.FEATURE_NO_TITLE);//沉浸式

EventBus.getDefault().register(this);

setContentView(initContentView());

initState();//沉浸式

initView();

initData();

initEvent();

}

protected abstract intinitContentView();

protected abstract voidinitView();

protected abstract voidinitData();

protected abstract voidinitEvent();

@Subscribe

public voidonReceive(Object o){

}

EventBus的事件接收方法,子類選擇性復(fù)寫

/**

*@time2017/4/14 9:40

*@desc跳轉(zhuǎn)到activity

*/

protected voidtoActivity(Class c,booleanclearOther,HashMap map) {

IntentUtils.makeIntent(this,c,clearOther,map);

}

/**

*@time2017/4/14 9:40

*@desc跳轉(zhuǎn)到activity

*/

protected voidtoActivity(Class c,HashMap map,booleanisFinish) {

IntentUtils.makeIntent(this,c,isFinish,map);

}

/**

*@time2017/4/14 9:35

*@desc返回鍵監(jiān)聽事件

*/

protected booleanbackPress() {

super.onBackPressed();

return false;

}

/**

*@time2017/4/1 18:02

*@desc沉浸式

*/

private voidinitState() {

ViewGroup contentFrameLayout = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);

View parentView = contentFrameLayout.getChildAt(0);

if(parentView !=null&& Build.VERSION.SDK_INT>=14) {

parentView.setFitsSystemWindows(true);

}

StatusBarCompat.compat(this,getResources().getColor(R.color.base_red));

}

@Override

protected voidonResume() {

super.onResume();

}

@Override

protected voidonDestroy() {

super.onDestroy();

EventBus.getDefault().unregister(this);

MActivityManager.getInstance().popActivity(this);

}

@Override

public booleanonKeyDown(intkeyCode,KeyEvent event) {

if((keyCode == KeyEvent.KEYCODE_BACK)) {

returnbackPress();

}else{

return super.onKeyDown(keyCode,event);

}

}

@Override

public voidonBackPressed() {

backPress();

}

}


3:用到的類MActivityManager

public class MActivityManager{

private staticMActivityManagerMActivityManager;

private staticStackactivityStack;

privateMActivityManager() {

}

//退出棧頂Activity

public voidpopActivity(Activity activity) {

if(activity !=null) {

//在從自定義集合中取出當(dāng)前Activity時(shí)爆土,也進(jìn)行了Activity的關(guān)閉操作

activity.finish();

activityStack.remove(activity);

activity =null;

}

}

//獲得當(dāng)前棧頂Activity

publicActivitycurrentActivity() {

Activity activity =null;

if(!activityStack.empty())

activity=activityStack.lastElement();

returnactivity;

}

//將當(dāng)前Activity推入棧中

public voidpushActivity(Activity activity) {

if(activityStack==null) {

activityStack=newStack();

}

activityStack.add(activity);

}

//退出棧中所有Activity

public voidpopAllActivity() {

while(true) {

Activity activity = currentActivity();

if(activity ==null) {

break;

}

popActivity(activity);

}

}

//退出棧中所有Activity

public voidpopAllActivityExceptOne(Class cls) {

while(true) {

Activity activity = currentActivity();

if(activity ==null) {

break;

}

if(activity.getClass().equals(cls)) {

break;

}

popActivity(activity);

}

}

//通過一個(gè)單例模式返回當(dāng)前類的實(shí)例對(duì)象

public staticMActivityManagergetInstance() {

if(MActivityManager==null) {

synchronized(MActivityManager.class) {

if(MActivityManager==null) {

MActivityManager=newMActivityManager();

}

}

}

returnMActivityManager;

}

}


4:用到的類IntentUtils

public class IntentUtils{

/**

*@time2017/4/17 16:56

*@descintent參數(shù)灵奖,支持String,Integer,Double,Folat

*/

private static voidaddParam(Intent intent,HashMap map) {

for(String s : map.keySet()) {

Object o = map.get(s);

if(oinstanceofString) {

intent.putExtra(s,(String) map.get(s));

}else if(oinstanceofInteger) {

intent.putExtra(s,(Integer) map.get(s));

}else if(oinstanceofDouble) {

intent.putExtra(s,(Double) map.get(s));

}else if(oinstanceofFloat) {

intent.putExtra(s,(Float) map.get(s));

}else if(oinstanceofSerializable) {

intent.putExtra(s,(Serializable) map.get(s));

}else{

LogUtils.i("MActivity_toActivityClearOther","暫不支持的參數(shù)類型");

}

}

}

public static voidmakeIntent(Context context,Class c, booleanclearOther,HashMap map) {

if(clearOther) {

MActivityManager.getInstance().popAllActivityExceptOne(context.getClass());

}

Intent intent =newIntent(context,c);

if(map !=null) {

addParam(intent,map);

}

context.startActivity(intent);

if(clearOther) {

MActivityManager.getInstance().popAllActivityExceptOne(c);

}

}

public static voidmakeIntent(Context context,Class c,HashMap map,booleanisFinish){

Intent intent =newIntent(context,c);

if(map !=null) {

addParam(intent,map);

}

context.startActivity(intent);

if(isFinish){

try{

((Activity)context).finish();

}catch(Exception e){

LogUtils.e("IntentUtils_makeIntent","Context不是Activity類型");

}

}

}

}

5:用到的主題





最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佳镜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鼻弧,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件青自,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡驱证,警方通過查閱死者的電腦和手機(jī)延窜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抹锄,“玉大人逆瑞,你說我怎么就攤上這事荠藤。” “怎么了获高?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵哈肖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我谋减,道長(zhǎng)牡彻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任出爹,我火速辦了婚禮庄吼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘严就。我一直安慰自己总寻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布梢为。 她就那樣靜靜地躺著渐行,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铸董。 梳的紋絲不亂的頭發(fā)上祟印,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音粟害,去河邊找鬼蕴忆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悲幅,可吹牛的內(nèi)容都是我干的套鹅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汰具,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卓鹿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起留荔,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤吟孙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后存谎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拔疚,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年既荚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栋艳。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恰聘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晴叨,我是刑警寧澤凿宾,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站兼蕊,受9級(jí)特大地震影響初厚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孙技,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一产禾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牵啦,春花似錦亚情、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至裳瘪,卻和暖如春土浸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彭羹。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工黄伊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人皆怕。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓毅舆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親愈腾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子憋活,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 6,419評(píng)論 0 17
  • 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用-ChatDemoUI3.0 環(huán)...
    imGeek閱讀 1,553評(píng)論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理虱黄,服務(wù)發(fā)現(xiàn)悦即,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 本人初學(xué)Android橱乱,最近做了一個(gè)實(shí)現(xiàn)安卓簡(jiǎn)單音樂播放功能的播放器辜梳,收獲不少,于是便記錄下來自己的思路與知識(shí)總結(jié)...
    落日柳風(fēng)閱讀 19,133評(píng)論 2 41
  • — by 懶牽牛 當(dāng)春風(fēng)又喚醒生命 當(dāng)落葉再埋藏大地 輾轉(zhuǎn)世間最幸福的事莫過于 突然發(fā)現(xiàn)你決定要愛的人 原來早就深...
    懶牽牛閱讀 461評(píng)論 0 3