Android中MVP的应用

概述

对于代码架构,适合的才是最好的,至于是选用MVC,还是MVP,还是MVVM
一方面根据自己的擅长和喜好来决定,再一方面就是根据代码业务逻辑来决定
如果代码中压根没有用到Model层,那引入MVP等框架,真的只会让代码结构更复杂,而体现不出框架的优势。
不要为了使用框架而使用框架。

MVP Contract

public interface MediaListContract {
    /**
     * Presenter 接口则定义了该界面(功能)中所有的用户操作事件
     * presenter层实现了该接口,只关注业务层的逻辑相关
     * UI的更新只需调用View的状态方法
     */
    interface Presenter extends IPresenter {
        void getMedias();
    }

    /**
     * View接口定义了该界面(功能)中所有的UI状态情况
     * view层(Activity或Fragment)实现了该接口,只关注UI相关的状态更新
     * 所有事件操作都调用 presenter 来完成
     */
    interface View extends IView {
        void refreshList(List<MediaInfoBean> lstMedias);
        void showError(String msg);
    }
}

一般Activity

public class MediaViewActivity extends BaseActivity {
    private ActivityMediaViewBinding mView;
    private ArrayList<String> lstFilePaths;
    private int currentIndex;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mView = ActivityMediaViewBinding.inflate(getLayoutInflater());
        setContentView(mView.getRoot());
        initView();
    }

    @SuppressLint("ClickableViewAccessibility")
    private void initView() {
        Intent intent = this.getIntent();
        Bundle bundle = intent.getExtras();
        //...

        //点击播放和暂停
        mView.videoShow.setOnClickListener(view -> {
            if (mView.videoShow.isPlaying()) mView.videoShow.pause();
            else mView.videoShow.start();
        });
        //设置循环播放
        mView.videoShow.setOnPreparedListener(mediaPlayer -> {
            //...
        });
        //设定控件的滑动事件
        mView.videoShow.setOnTouchListener(new View.OnTouchListener() {
            //...
        });

        mView.tvBg.setOnTouchListener(new View.OnTouchListener() {
            //...
        });
    }

    private void play() {
        //使用videoview控件进行视频播放
        mView.videoShow.setVideoPath(lstFilePaths.get(currentIndex));
        mView.videoShow.start();
    }
}
posted @ 2021-10-27 14:02  曲幽  阅读(92)  评论(0编辑  收藏  举报