前言
在上篇我已經(jīng)講了Activity基類
的整體架構(gòu),大家感興趣的話可以參考
Activity基類詳解(2) — 架構(gòu)概述
這里我已經(jīng)著手將AppActivity
和AppFragActivity
進(jìn)行整合搬味,干掉了AppFragActivity
,只留下AppActivity
章郁。下面就對AppActivity
的基礎(chǔ)能力做一個(gè)簡單的介紹
今天涉及以下內(nèi)容:
概述
使用說明
- activity的注冊通用配置
- 隱藏標(biāo)題欄
- 控件初始化
3.1 原始方式初始化控件
3.2 利用 AppHelper 類初始化控件
3.3 利用超類 SuperActivity 中的方法初始化控件
3.4 利用 butterknife 初始化控件 - 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的注冊通用配置
activity
在 Mainfast.xml
中注冊的時(shí)候抬旺,通常會添加一些常用的配置屬性.例如你的 TestActivity
在 Mainfast.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è)app
的 theme
,在 mainfast.xml
中將 app
的 theme
設(shè)置成 Theme.Design.NoActionBar
即可,就像下面這樣:
<application
//以上代碼省略
//......
android:theme="@style/Theme.Design.NoActionBar">
//以下代碼省略
//......
</application>
如果你只需要隱藏某個(gè)activity
(如TestActivity
),那么你就不要改 mainfast.xml
中的 theme
,只需要在 TestActivity
加載 xml
文件之前設(shè)置 AppActivity
的 isNoTitle=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)容就介紹到這里了,謝謝大家。