Common
OkHttp 添加日志拦截器 LogInterceptor(近乎完美),添加请求头的拦截器 HeadersInterceptor
UI 设计遵守 Material Design
- 网络当然也是必不可少的,在 OkHttp 下添加日志拦截器 LogInterceptor,添加请求头的拦截器 HeadersInterceptor,还有一些用法不好封装成通用,详细看 demo
- UI 设计尽量遵循 Material Design
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()
###Dialog <img src="material_dialog.png" width="320" height="569"/> <img src="loading_dialog.png" width="320" height="569"/> - 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()
##SuperPresenter --- MVP 模型 >MVP 中 presenter 层的顶级父类,把 Activity 作为 View 层 - 配合 SuperActivity 使用 在 SuperActivity 的子类中通过注解声明对应的 Presenter
@RequirePresenter(JavaCourseUnitListPresenter.class) public class JavaCourseUnitListActivity extends ToolbarActivity
在 SuperPresenter 的子类中声明对应的 Activity
public class JavaCourseUnitListPresenter extends SuperPresenter
- 生命周期
//在 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()
##SuperModel >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);
>数据库和网络还没有整理封装,后期持续更新。。。 ##ToolbarActivity >继承 SuperActivity,拥有 SuperActivity 的所有特性,此外主要针对带有 Toolbar 的 Activity - 在 Activity 的 xml 中写入 Toolbar
<?xml version="1.0" encoding="utf-8"?>
<cn.lemon.view.RefreshRecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
**注意**:Toolbar 的 id 必须是`android:id="@+id/toolbar"`。 - Toolbar 相关操作
//获取 Toolbar public Toolbar getToolbar() //设置是否显示做左上角的返回剪头(默认显示) public void setToolbarHomeBack(boolean isHomeBack) ```