- 開發(fā)中的頂級父類組件目锭,如:SuperActivity,SuperFragment,SuperModel,SuperPresenter
- 網(wǎng)絡(luò)當(dāng)然也是必不可少崩掘,給 OkHttp 添加日志攔截器 LogInterceptor仔雷,添加請求頭的攔截器 HeadersInterceptor ,還有一些用法不好封裝成通用,詳細看 demo module
- UI設(shè)計盡量遵循 Material Design
- 使用請依賴 common module
SuperFragment & SuperActivity
狀態(tài)頁
- SuperFragment
//isUseStatusPages設(shè)置是否使用狀態(tài)頁
public SuperFragment(@LayoutRes int layoutResID, boolean isUseStatusPages)
狀態(tài)頁顯示方法:
//顯示空狀態(tài)
public void showEmpty();
//顯示錯誤狀態(tài)
public void showError();
//顯示加載狀態(tài)
public void showLoading();
//顯示正常內(nèi)容狀態(tài)
public void showContent();
- SuperActivity
//show設(shè)置是否使用狀態(tài)頁,必須在setContentView()方法之前調(diào)用
public void useStatusPages(boolean show)
狀態(tài)頁顯示方法:
//顯示空狀態(tài)
public void showEmpty();
//顯示錯誤狀態(tài)
public void showError();
//顯示加載狀態(tài)
public void showLoading();
//顯示正常內(nèi)容狀態(tài)
public void showContent();
Dialog
- SuperFragment
//除了這個完整的展示Dialog方法,還有些重載方法井仰,在多次展示不同個Dialog前需先調(diào)用dismissDialog()方法
public void showDialog(String title, String content, String positiveText, String passiveText, DialogInterface.OnClickListener positiveListener,
DialogInterface.OnClickListener passiveListener)
//消除Dialog
public void dismissDialog()
- SuperActivity
//除了這個完整的展示Dialog方法,還有些重載方法破加,在多次展示不同個Dialog前需先調(diào)用dismissDialog()方法
public void showDialog(String title, String content, String positiveText, String passiveText, DialogInterface.OnClickListener positiveListener,
DialogInterface.OnClickListener passiveListener)
//消除Dialog
public void dismissDialog()
進度條風(fēng)格Dialog
public void showLoadingDialog()
public void dismissLoadingDialog()
SuperPresenter
MVP中presenter層的頂級父類俱恶,把Activity作為View層
- 配合SuperActivity使用
在SuperActivity的子類中通過注解聲明對應(yīng)的Presenter
@RequirePresenter(JavaCourseUnitListPresenter.class)
public class JavaCourseUnitListActivity extends ToolbarActivity<JavaCourseUnitListPresenter>
在SuperPresenter的子類中聲明對應(yīng)的Activity
public class JavaCourseUnitListPresenter extends SuperPresenter<JavaCourseUnitListActivity>
- 生命周期
//在Activity的onStart之后回調(diào),在Fragment的onCreateView之后回調(diào)
public void onCreate(){};
//在Activity的onResume之后回調(diào)范舀,在Fragment的onResume中回調(diào)
public void onResume(){}
//在view的onDestroy中調(diào)用
public void onDestroy(){}
- View層和Presenter層相互調(diào)用
presenter中
//獲取對應(yīng)的view(activity)
protected V getView();
activity中
//獲取對應(yīng)的presenter
public P getPresenter()
SuperModel
MVP中的model層合是,即數(shù)據(jù)管理層。
通常APP中的數(shù)據(jù)存儲或者來源主要通過:本地數(shù)據(jù)庫锭环,網(wǎng)絡(luò)聪全,SharedPreferences,文件辅辩。
- 基本數(shù)據(jù)類型:int,long,float,boolean,string...难礼,通過SharedPreferences進行保存,方法:
//其他的類似
public void putInt(String key, int value);
public int getInt(String key, int defaultInt);
- 對象(Object)類型通過文件存儲
public void putObject(String key, Object value);
public Object getObject(String key);
數(shù)據(jù)庫和網(wǎng)絡(luò)還沒有整理封裝玫锋,后期持續(xù)更新蛾茉。。撩鹿。
ToolbarActivity
繼承SuperActivity谦炬,擁有SuperActivity的所有特性,此外主要針對帶有Toolbar的Activity
- 在Activity的xml中寫入Toolbar
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/java_activity_course_unit_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="cn.lemon.jcourse.module.java.JavaCourseUnitListActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ToolbarTheme" />
<cn.lemon.view.RefreshRecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
注意:Toolbar的id必須是android:id="@+id/toolbar"
节沦。
- Toolbar相關(guān)操作
//獲取Toolbar
public Toolbar getToolbar()
//設(shè)置是否顯示做左上角的返回剪頭(默認顯示)
public void setToolbarHomeBack(boolean isHomeBack)