Common

Project Url: llxdaxia/Common
Introduction: 开发中的顶级父类封装,如:SuperActivity,SuperFragment,SuperModel,SuperPresenterOkHttp 添加日志拦截器 LogInterceptor(近乎完美),添加请求头的拦截器 HeadersInterceptorUI 设计遵守 Material Design
More: Author   ReportBugs   DemoAPK   
Tags:
开发中的顶级父类封装-如:SuperActivity-SuperFragment-SuperModel-SuperPresenter-OkHttp添加日志拦截器-MVP模型-开发框架Base类-
  • 开发中的顶级父类组件,如:SuperActivity,SuperFragment,SuperModel,SuperPresenter
  • 网络当然也是必不可少,给 OkHttp 添加日志拦截器 LogInterceptor,添加请求头的拦截器 HeadersInterceptor ,还有一些用法不好封装成通用,详细看 demo module
  • UI 设计尽量遵循 Material Design
  • 使用请下载并依赖 common module,敏捷开发

SuperFragment & SuperActivity

状态页

  • 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) ```

更多用法请看 Demo

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools