- 开发中的顶级父类组件,如:SuperActivity,SuperFragment,SuperModel,SuperPresenter
- 网络当然也是必不可少,给 OkHttp 添加日志拦截器 LogInterceptor,添加请求头的拦截器 HeadersInterceptor ,还有一些用法不好封装成通用,详细看 demo module
- UI设计尽量遵循 Material Design
- 使用请下载并依赖 common module,敏捷开发
- SuperFragment
//isUseStatusPages设置是否使用状态页
public SuperFragment(@LayoutRes int layoutResID, boolean isUseStatusPages)
状态页显示方法:
//显示空状态
public void showEmpty();
//显示错误状态
public void showError();
//显示加载状态
public void showLoading();
//显示正常内容状态
public void showContent();
其他
//构造函数
public BBSFragment() {
super(R.layout.bbs_fragment, true);
}
//重写onViewCreated()实例化view
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mAddBBS = findViewById(R.id.add_bbs);
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mAdapter = new BBSAdapter(getActivity());
mRecyclerView.setAdapter(mAdapter);
}
注意:不再重写onCreateView()方法
- SuperActivity
//show设置是否使用状态页,必须在setContentView()方法之前调用
public void useStatusPages(boolean show)
状态页显示方法:
//显示空状态
public void showEmpty();
//显示错误状态
public void showError();
//显示加载状态
public void showLoading();
//显示正常内容状态
public void showContent();
其他
mTitle = $(R.id.title); //取代findViewById()
- SuperFragment
//除了这个完整的展示Dialog方法,还有些重载方法,在多次展示不同个Dialog前需先调用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前需先调用dismissDialog()方法
public void showDialog(String title, String content, String positiveText, String passiveText, DialogInterface.OnClickListener positiveListener,
DialogInterface.OnClickListener passiveListener)
//消除Dialog
public void dismissDialog()
进度条风格Dialog
public void showLoadingDialog()
public void dismissLoadingDialog()
MVP中presenter层的顶级父类,把Activity作为View层
- 配合SuperActivity使用
在SuperActivity的子类中通过注解声明对应的Presenter
@RequirePresenter(JavaCourseUnitListPresenter.class)
public class JavaCourseUnitListActivity extends ToolbarActivity<JavaCourseUnitListPresenter>
在SuperPresenter的子类中声明对应的Activity
public class JavaCourseUnitListPresenter extends SuperPresenter<JavaCourseUnitListActivity>
- 生命周期
//在Activity的onStart之后回调,在Fragment的onCreateView之后回调
public void onCreate(){};
//在Activity的onResume之后回调,在Fragment的onResume中回调
public void onResume(){}
//在view的onDestroy中调用
public void onDestroy(){}
- View层和Presenter层相互调用
presenter中
//获取对应的view(activity)
protected V getView();
activity中
//获取对应的presenter
public P getPresenter()
MVP中的model层,即数据管理层。 通常APP中的数据存储或者来源主要通过:本地数据库,网络,SharedPreferences,文件。
- 基本数据类型: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);
数据库和网络还没有整理封装,后期持续更新。。。
继承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相关操作
//获取Toolbar
public Toolbar getToolbar()
//设置是否显示做左上角的返回剪头(默认显示)
public void setToolbarHomeBack(boolean isHomeBack)