引用方式

allprojects {

repositories {

maven { url ‘https://jitpack.io’ }

}

}

dependencies {

implementation ‘com.github.huangxiaoguo1:hxgmvp:1.0.0’

}

简介

主要封装的类有:HxgMvpActivity,HxgMvpFragment

控件有:HxgBaseButton,HxgBaseImage,HxgBaseTextView

HxgBaseFrameLayout,HxgBaseLinearLayout,HxgBaseRelativeLayout

MVP使用

创建用于V层和M层进行交互的接口

例如:

//用于V层和M层进行交互的接口

public interface NetWorkView extends BaseView {

void onNetWorkResult(StudyBean studyBean);

}

M层 处理数据

例如:

//M层

public class NetWorkModel {

public void getNetWork(Context context,

DefaultHttpCallBack callBack) {

Map<String, Object> field = new ArrayMap<>();

field.put(“currentPage”, “1”);

field.put(“pageSize”, “15”);

field.put(“indexFlag”, “1”);

HxgHttpUtils.with(context)

.post()

.url(“https://***.1035.mobi/app/course/index.do”)

.addParam(field)

.execeute(callBack);

}

}

P层 和V层进行交互

例如:

//P层

//和V层进行交互

public class NetWorkPresenter extends HxgMvpBasePresenter {

private NetWorkModel netWorkModel;

//创建于M层的引用

public NetWorkPresenter() {

this.netWorkModel = new NetWorkModel();

}

public void getNetWork(Context context) {

this.netWorkModel.getNetWork(context, new DefaultHttpCallBack() {

@Override

public void onSuccess(StudyBean studyBean) {

if (getView() != null) {

getView().onNetWorkResult(studyBean);

}

}

@Override

public void onFail(Exception e) {

e.printStackTrace();

}

});

}

}

Activity处理数据

例如:(记得实现数据回调接口NetWorkView)

**

  • 封装好的MVP框架

  • 主要涉及类在:interfaceview包,model包,presenter包中

*/

@HxgContentView(R.layout.activity_main)

public class MainActivity extends HxgMvpActivity<NetWorkView, NetWorkPresenter> implements NetWorkView {

private FragmentManager fragmentManager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

HxgViewUtils.getView().inject(this);

fragmentManager = getSupportFragmentManager();

fragmentManager.beginTransaction().replace(R.id.fl_main, new MainFragment())

.commitAllowingStateLoss();

}

@Override

public NetWorkPresenter createPresenter() {

return new NetWorkPresenter();

}

@Override

public NetWorkView createView() {

return this;

}

@HxgOnClick(R.id.btn_network)

@HxgCheckNet(HxgContast.DEFAULT_TYPE)

private void btnNetworkClick(Button btnNetwork) {

getPresenter().getNetWork(this);

}

/**

  • 返回的数据

  • @param studyBean

*/

@Override

public void onNetWorkResult(StudyBean studyBean) {

Toast.makeText(this, studyBean.toString(), Toast.LENGTH_LONG).show();

}

/**

  • 跳转Dagger页面

  • @param dagger

*/

@HxgOnClick(R.id.dagger)

private void daggerClick(Button dagger) {

startActivity(new Intent(this, DaggerActivity.class));

}

}

Fragment处理数据

例如:(记得实现数据回调接口NetWorkView)

@HxgContentView(R.layout.fragment_main)

public class MainFragment extends HxgMvpFragment<NetWorkView, NetWorkPresenter> implements NetWorkView {

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View mView = HxgViewUtils.getView().inject(this, inflater, container);

return mView;

}

@Override

public NetWorkPresenter createPresenter() {

return new NetWorkPresenter();

}

@Override

public NetWorkView createView() {

return this;

}

@HxgOnClick(R.id.btn_network)

@HxgCheckNet(HxgContast.DEFAULT_TYPE)

private void btnNetworkClick(Button btnNetwork) {

getPresenter().getNetWork(getContext());

}

@Override

public void onNetWorkResult(StudyBean studyBean) {

Toast.makeText(getContext(), studyBean.toString(), Toast.LENGTH_LONG).show();

}

}

结合dagger2使用

dagger的作用主要是自动实例化Presenter

Activity中使用
实例化Presenter对象

例如:

/**

  • Created by Administrator on 2018/7/25 0025.

  • 使用Dagger创建对象

*/

@Module

public class NetWorkModule {

private DaggerActivity mActivity;

public NetWorkModule(DaggerActivity mActivity) {

this.mActivity = mActivity;

}

//显然我们并不是很多地方都需要某对象,我们在需要用该对象的界面的Module中提供注入即可

@Singleton

@Provides

NetWorkPresenter provideNetWork() {

return new NetWorkPresenter();

}

}

Dagger绑定

/**

  • Created by Administrator on 2018/7/25 0025.

  • Dagger绑定

*/

@Singleton

@Component(modules = NetWorkModule.class)

public interface MainComponent {

void inject(DaggerActivity activity);

}

dagger注入(以activity为例)

@Inject

NetWorkPresenter presenter;

记得注入要在onCreate方法的 super.onCreate(savedInstanceState);之前

DaggerMainComponent.builder()

.netWorkModule(new NetWorkModule(this))

.build()

.inject(this);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

写在最后

由于本文罗列的知识点是根据我自身总结出来的,并且由于本人水平有限,无法全部提及,欢迎大神们能补充~

将来我会对上面的知识点一个一个深入学习,也希望有童鞋跟我一起学习,一起进阶。

提升架构认知不是一蹴而就的,它离不开刻意学习和思考。

**这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近1个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

最近还在整理并复习一些Android基础知识点,有问题希望大家够指出,谢谢。

希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!

转发+点赞+关注,第一时间获取最新知识点

Android架构师之路很漫长,一起共勉吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

6096)]

写在最后

由于本文罗列的知识点是根据我自身总结出来的,并且由于本人水平有限,无法全部提及,欢迎大神们能补充~

将来我会对上面的知识点一个一个深入学习,也希望有童鞋跟我一起学习,一起进阶。

提升架构认知不是一蹴而就的,它离不开刻意学习和思考。

**这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近1个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

[外链图片转存中…(img-CW2D65DH-1713716306097)]

[外链图片转存中…(img-wMJr75UE-1713716306098)]

最近还在整理并复习一些Android基础知识点,有问题希望大家够指出,谢谢。

希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!

转发+点赞+关注,第一时间获取最新知识点

Android架构师之路很漫长,一起共勉吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐