android新项目的最初搭建

公司近来要做一个电商类的项目,所以便开始了一个项目的框架的搭建。关于使用MVP和MVC的模式,我是推荐用MVP的,因为MVP数据和页面结构分的清晰,对于后期的迭代很有好处。
我先把这几天的干货分享给大家吧

第一、建立完项目之后我把需要常用的库(glide、okhttp、gson、rxjava、recyclerview、cardview、bottom-navigation-bar、bga-banner)导入进来、这些库基本是一个项目常用的网络请求、图片加载、banner和一些常用的view控件;
      另外再添加一些常用的工具类
第二、建立基类:

1)建立P层的基类

  • / Creates a new weak reference that refers to the given object. The new reference is not registered with any queue.
    @param referent object the new weak reference will refer to
    public WeakReference(T referent) {
    super(referent);
    }*

    p.png

    2)建立activity的基类
    //用于创建Presenter和判断是否使用MVP模式(由子类实现)
    //判断是否使用MVP模式

     protected abstract T createPresenter();
     T mPresenter = createPresenter();
      if (mPresenter != null) {
          mPresenter.attachView((V) this);//因为之后所有的子类都要实现对应的View接口
      }
    

    private View convertView() {

      View view = null;
      if (offerLayout() instanceof Integer) {
          view = LayoutInflater.from(this).inflate((Integer) offerLayout(), null, false);
      } else if (offerLayout() instanceof View) {
          view = (View) offerLayout();
      } else {
          throw new IllegalArgumentException("offerLayout only be View or be Resource Id");
      }
      return view;
    

    }

引用:View mConvertView=convertView();
if (mConvertView == null) {
// 传其他资源id 时的处理(只能传布局资源id )
throw new ClassCastException("view convert fail,check your resource id be layout resource");
} else {
setContentView(mConvertView);
}

/**
* 处理view。 用户做自己的工作
*/
public abstract void onBindView();

public abstract void destory();

public abstract void initData();

public abstract void initListener();

3.建立BaseFragment
//判断是否使用MVP模式

    mPresenter = createPresenter();
    if (mPresenter != null) {
        mPresenter.attachView((V) this);//因为之后所有的子类都要实现对应的View接口
    }

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(provideContentViewId(), container, false);
    initView(rootView);
    return rootView;
}

4.网络框架
网络框架我用的是使用github上的okgo已经封装好的
地址:https://github.com/jeasonlzy

你可能感兴趣的:(android新项目的最初搭建)