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();
}
}
Android中MVP的应用的更多相关文章
- android中MVP模式(一) - 清风明月的专栏 - CSDN博客
presenter 主持人.主导器 ====== 1. 明确需求,界面如下:可存,可根据id读取数据. 包结构图 2. 建立bean public class UserBean { private S ...
- Android中MVP模式与MVC模式比較(含演示样例)
原文链接 http://sparkyuan.me/ 转载请注明出处 MVP 介绍 MVP模式(Model-View-Presenter)是MVC模式的一个衍生. 主要目的是为了解耦,使项目易于维护. ...
- android中MVP模式
http://blog.csdn.net/ysh06201418/article/details/46534799 Android App整体架构设计的思考 http://blog.csdn.ne ...
- MVP架构在xamarin android中的简单使用
好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑),怪 ...
- [译]Google官方关于Android架构中MVP模式的示例
概述 该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式.其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库.异步任务通过回调处理. 注意 ...
- Android中MVC、MVP、MVVM具体解释
前言 今天有时间就刚好有想写关于这几个名词.对于我来说.事实上这么多名词.思想归根究竟就是要依据项目实际.人员配置来做合理优化,既不能纸上谈兵.又不能畏惧不前.那么合理分阶段架构和完好代码才是关键,本 ...
- android中MVC,MVP和MVVM三种模式详解析
我们都知道,Android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的.虽然我们项目用到 ...
- Android中的MVP架构初探
说来羞愧,MVP的架构模式已经在Android领域出现一两年了.可是到今天自己才開始Android领域中的MVP架构征程. 闲话不多说,開始吧. 一.架构演变概述 我记得我找第一份工作时,面试官问我& ...
- Android架构(一)MVP架构在Android中的实践
Android架构(一)MVP架构在Android中的实践 https://www.300168.com/yidong/show-2790.html 核心提示:为什么要重视程序的架构设计 对程序进 ...
- 【腾讯Bugly干货分享】一步一步实现Android的MVP框架
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44 内容大纲: Android 开发 ...
随机推荐
- Windows下将QT打包为可执行文件(exe)的完整流程,包含第三方库。
打包我的 Qt/C++ 视觉应用:从依赖部署到单文件 EXE 的踩坑之旅 一.前言 最近完成了一个基于 Qt/C++ 的桌面视觉应用项目(proj_ai_vision_app).这个项目功能还挺复杂, ...
- sonarqube+gitlab+jenkins+maven集成搭建(四)
安装Gitlab 关闭firewalld防火墙和selinux防火墙,如图1-2:[root@localhost ~]# systemctl stop firewalld[root@localhost ...
- Web前端杂乱知识复习
OSI OSI是Open System Interconnect的缩写,意为开放式系统互联.其各个层次的划分遵循下列原则: (1)同一层中的各网络节点都有相同的层次结构,具有同样的功能. (2 ...
- SSM整合2
目录 目录结构 数据库 pom.xml依赖 domain dao层 mapper service层 exception包 contorller层 配置文件 applicationContext.xml ...
- Java5新特性--可变参数
可变参数 public class Test01 { public static void main(String[] args) { System.out.println(add(123)); Sy ...
- SQL 日常练习 (十七)
五一了, 2020过去近乎一半了, 疫情原因, 哪都没去, 其实与其出去玩, 不如呆着学习, 终身学习, 学无止境, 气有浩然, 这是我从上大学开始一直刻在脑海的训诫. 都说今年很艰难, 回头一想, ...
- 典型相关分析 CCA
最近有小伙伴在问我一个数据分析的问题, 做毕设, 实证分析. 不知道改如何处理数据. 看了下设计的量表大致是这样的, 都是 5级的里克特量表, 大致分为两波, X, Y. 小伙伴认为就只有两个变量, ...
- 安装Scikit-learn 0.24.2版本
安装Scikit-learn 0.24.2版本 Anaconda 安装scikit-learn是0.19版本,目前最新版本是0.24.2,之前的版本与现在的版本之间差距还是比较大,因此有必要对scik ...
- C语言函数指针解析
C语言函数指针解析 一.函数指针的本质 函数指针是存储函数内存地址的变量,它允许程序在运行时动态调用不同的函数.与数据指针不同,函数指针指向的是可执行代码段. /* 典型声明方式 */ int (*f ...
- Linux grep查询关键词首次或者最近一次出现的地方
有的时候,我们需要在应用日志中搜索关键词前后的的报错信息,但是由于应用的日志很多,我们只想查询关键词第一次或者最后一次出现的地方的前后几行日志,这时,就可以使用grep和管道命令处理了. 更多 ...