Activity基類詳解(3) — AppActivity基礎(chǔ)能力

前言

在上篇我已經(jīng)講了Activity基類的整體架構(gòu),大家感興趣的話可以參考
Activity基類詳解(2) — 架構(gòu)概述
這里我已經(jīng)著手將AppActivityAppFragActivity進(jìn)行整合搬味,干掉了AppFragActivity,只留下AppActivity章郁。下面就對AppActivity的基礎(chǔ)能力做一個(gè)簡單的介紹

今天涉及以下內(nèi)容:
概述
使用說明

  1. activity的注冊通用配置
  2. 隱藏標(biāo)題欄
  3. 控件初始化
    3.1 原始方式初始化控件
    3.2 利用 AppHelper 類初始化控件
    3.3 利用超類 SuperActivity 中的方法初始化控件
    3.4 利用 butterknife 初始化控件
  4. AppActivity中方法簡介
    4.1 控件值獲取,非空判斷、取值
    4.2 吐司
    4.3 控件初始化
    4.4 activity界面跳轉(zhuǎn)傳值
    4.5 系統(tǒng)dialog方法

概述

AppActivity作為一個(gè)Activity基類,具備mvp模式,提供系列的狀態(tài)欄設(shè)置,控件初始化,非空判斷,常用界面跳轉(zhuǎn)傳值以及小部分系統(tǒng)級dialog的創(chuàng)建. 供activity繼承制市,提高activity的創(chuàng)建及編寫效率

使用說明

一. activity的注冊通用配置

activityMainfast.xml 中注冊的時(shí)候抬旺,通常會添加一些常用的配置屬性.例如你的 TestActivityMainfast.xml 中注冊的時(shí)候,可以這樣配置:

 <application
        //以下代碼省略
        //......
        >
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".TestActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|touchscreen"
            android:screenOrientation="portrait" />
            
    </application>
二. 隱藏標(biāo)題欄

在app開發(fā)過程中祥楣,我們經(jīng)常會隱藏標(biāo)題欄开财。AppActivity也提供了相關(guān)方法.。如果你要將整個(gè)app都設(shè)為標(biāo)題欄隱藏狀態(tài)荣堰,那么你可以直接在 Mainfast.xml 中設(shè)置整個(gè)apptheme,在 mainfast.xml 中將 apptheme 設(shè)置成 Theme.Design.NoActionBar即可,就像下面這樣:

<application
        //以上代碼省略
        //......
        android:theme="@style/Theme.Design.NoActionBar">
        
        //以下代碼省略
        //......

</application>

如果你只需要隱藏某個(gè)activity(如TestActivity),那么你就不要改 mainfast.xml 中的 theme,只需要在 TestActivity 加載 xml 文件之前設(shè)置 AppActivityisNoTitle=true 即可,類似下面這樣:

public class TestActivity extends AppActivity {

    @Override
    public int getContentViewId() {
        super.isNoTitle=true;//隱藏標(biāo)題欄
        return R.layout.activity_test;//activity_test為TestActivity對應(yīng)的xml文件
    }

    @Override
    public void initData() {

    }

    @Override
    public void setListener() {

    }
}
三. 控件初始化

TestActivity 繼承 AppActivity 以后,TestActivity界面的控件可以有多種初始化方式

3.1 原始方式初始化控件

TestActivity 作為一個(gè)activity,其界面中的控件具備最原始的初始化方式,以 TestActivity 界面的 TextView 為例,你可以這樣初始化:

public class TestActivity extends AppActivity {

    private TextView mTvTest;

    @Override
    public int getContentViewId() {
        return R.layout.activity_test;//activity_test為TestActivity對應(yīng)的xml文件
    }

    @Override
    public void initData() {
       mTvTest=findViewById(R.id.textView);
    }

    @Override
    public void setListener() {

    }
}
3.2 利用 AppHelper 類初始化控件

AppHelper作為一個(gè) activity輔助類床未,其中有一個(gè)幫助初始化控件的方法.初始化如上 TestActivity 中的 mTvTest 時(shí),你可以這樣:

//初始化mTvTest,其中 mContext 為 TestActivity 實(shí)例
mTvTest=AppHelper.getInstance().getView(mContext,R.id.textView);
3.3 利用超類 SuperActivity 中的方法初始化控件

TestActivity 類中初始化 mTvTest振坚,你還可以這樣操作:

mTvTest=getView(R.id.textView);
3.4 利用 butterknife 初始化控件

AppActivity 中已經(jīng)集成了 butterknife,但是作為一個(gè)庫引用的話薇搁,你仍需在自己的項(xiàng)目中引用 butterknife 庫,如你在自己項(xiàng)目的 app_module下做 butterknife 庫的引用:

android {
  ...
  // Butterknife requires Java 8.
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  implementation 'com.jakewharton:butterknife:10.1.0'
  annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
}

然后在你的 TestActivity 類中就可以進(jìn)行愉快的初始化了:

public class TestActivity extends AppActivity {
    
    @BindView(R.id.textView)
    TextView mTvTest;

    @Override
    public int getContentViewId() {
        return R.layout.activity_test;//activity_test為TestActivity對應(yīng)的xml文件
    }

    @Override
    public void initData() {
       mTvTest=findViewById(R.id.textView);
    }

    @Override
    public void setListener() {

    }
}
四. AppActivity中方法簡介
4.1 控件值獲取,非空判斷、取值

更多相關(guān)方法請查閱 AppHelper

/**獲取控件值**/
public String getTextOfView(TextView textView)

/**獲取非空字符串**/
public String getNotEmptyString(String str)
4.2 吐司
/**長吐司**/
public void showToast(String msg)

/**短吐司**/
public void showShortToast(String msg)
4.3 控件初始化
/**用于初始化控件的**/
protected <T> T getView(int rId)
4.4 activity界面跳轉(zhuǎn)傳值

更多相關(guān)方法請查閱 IntentHelper

/**無參界面跳轉(zhuǎn)**/
public void startAct(Class<?> cls)

/**含一個(gè)參數(shù)的界面跳轉(zhuǎn)**/
public void startParameterAct(Class<?> cls, String tag, Object parameter)

/**接收上一個(gè)界面?zhèn)鬟^來的int**/
public int getIntParameter(String tag)

/**接收上一個(gè)界面?zhèn)鬟^來的String**/
public String getStringParameter(String tag)

/**接收上一個(gè)界面?zhèn)鬟^來的boolean**/
public boolean getBooleanParameter(String tag)

/**接收上一個(gè)界面?zhèn)鬟^來的Bundle**/
public Bundle getBundleParameter(String tag)

/**接收上一個(gè)界面?zhèn)鬟^來的對象渡八,對象需要實(shí)現(xiàn)Serializable**/
public Serializable getSerializableObject(String tag)

/**接收上一個(gè)界面?zhèn)鬟^來的對象啃洋,對象需要實(shí)現(xiàn)Parcelable**/
public Parcelable getParcelableObject(String tag)

/**傳一個(gè)int集合的界面跳轉(zhuǎn)**/
public void startIntegerListAct(Class<?> cls, String tag, List<Integer> list)

/**接收上一個(gè)界面?zhèn)鬟^來的int集合**/
public List<Integer> getIntegerList(String tag)

/**傳一個(gè)String集合的界面跳轉(zhuǎn)**/
public void startStringListAct(Class<?> cls, String tag, List<String> list)

/**接收上一個(gè)界面?zhèn)鬟^來的String集合**/
public List<String> getStringList(String tag)

/**傳一個(gè)object集合的界面跳轉(zhuǎn),集合中的object需要實(shí)現(xiàn)Parcelable接口**/
public void startParcelableListAct(Class<?> cls, String tag, List<? extends Parcelable> list)

/**接收上一個(gè)界面?zhèn)鬟^來的object集合,集合中的object需要實(shí)現(xiàn)Parcelable接口**/
public List<? extends Parcelable> getParcelableList(String tag)

/***
 * 帶List<Serializable>list的界面跳轉(zhuǎn)
 *
 * @param cls
 * @param bundle  若有攜帶有信息的bundle需要傳,則此處傳該bundle對象
 *                若沒有bundle需要傳,則此處傳null就行
 * @param tag
 * @param list
 */
void startSerializableListAct(Class<?> cls, Bundle bundle, String tag, List<? extends Serializable> list);

/**用intent接收上一個(gè)界面?zhèn)鬟^來的list<Serializable>list**/
List<? extends Serializable> getSerializableList(String tag);

4.5 系統(tǒng)dialog方法
/** 含有標(biāo)題和內(nèi)容的對話框 **/
protected AlertDialog showAlertDialog(String title, String message)

/** 含有標(biāo)題、內(nèi)容屎鳍、兩個(gè)按鈕的對話框 **/
protected AlertDialog showAlertDialog(String title, String message, String positiveText,
                                          DialogInterface.OnClickListener onPositiveClickListener, String negativeText,
                                          DialogInterface.OnClickListener onNegativeClickListener)
                                          
/** 含有標(biāo)題宏娄、內(nèi)容、圖標(biāo)逮壁、兩個(gè)按鈕的對話框 **/
protected AlertDialog showAlertDialog(String title, String message, int icon, String positiveText,
                                          DialogInterface.OnClickListener onPositiveClickListener, String negativeText,
                                          DialogInterface.OnClickListener onNegativeClickListener)       
                                          
/** 進(jìn)度條 */
protected ProgressDialog getProgressDialog(String title, String message, boolean cancelable)

ok孵坚,今天的內(nèi)容就介紹到這里了,謝謝大家。

下篇 Activity基類詳解(4) — AppActivity簡單使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卖宠,一起剝皮案震驚了整個(gè)濱河市巍杈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扛伍,老刑警劉巖筷畦,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刺洒,居然都是意外死亡鳖宾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門逆航,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼎文,“玉大人,你說我怎么就攤上這事纸泡∑剩” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵女揭,是天一觀的道長蚤假。 經(jīng)常有香客問我,道長吧兔,這世上最難降的妖魔是什么磷仰? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮境蔼,結(jié)果婚禮上灶平,老公的妹妹穿的比我還像新娘。我一直安慰自己箍土,他們只是感情好逢享,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吴藻,像睡著了一般瞒爬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沟堡,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天侧但,我揣著相機(jī)與錄音,去河邊找鬼航罗。 笑死禀横,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粥血。 我是一名探鬼主播柏锄,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼酿箭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了趾娃?” 一聲冷哼從身側(cè)響起七问,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茫舶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刹淌,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饶氏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了有勾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疹启。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔼卡,靈堂內(nèi)的尸體忽然破棺而出喊崖,到底是詐尸還是另有隱情,我是刑警寧澤雇逞,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布荤懂,位于F島的核電站,受9級特大地震影響塘砸,放射性物質(zhì)發(fā)生泄漏节仿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一掉蔬、第九天 我趴在偏房一處隱蔽的房頂上張望廊宪。 院中可真熱鬧,春花似錦女轿、人聲如沸箭启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽傅寡。三九已至,卻和暖如春婿禽,著一層夾襖步出監(jiān)牢的瞬間赏僧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工扭倾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淀零,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓膛壹,卻偏偏與公主長得像驾中,于是被迫代替她去往敵國和親唉堪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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