概述

对于代码架构,适合的才是最好的,至于是选用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的应用的更多相关文章

  1. android中MVP模式(一) - 清风明月的专栏 - CSDN博客

    presenter 主持人.主导器 ====== 1. 明确需求,界面如下:可存,可根据id读取数据. 包结构图 2. 建立bean public class UserBean { private S ...

  2. Android中MVP模式与MVC模式比較(含演示样例)

    原文链接 http://sparkyuan.me/ 转载请注明出处 MVP 介绍 MVP模式(Model-View-Presenter)是MVC模式的一个衍生. 主要目的是为了解耦,使项目易于维护. ...

  3. android中MVP模式

    http://blog.csdn.net/ysh06201418/article/details/46534799 Android App整体架构设计的思考   http://blog.csdn.ne ...

  4. MVP架构在xamarin android中的简单使用

    好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑),怪 ...

  5. [译]Google官方关于Android架构中MVP模式的示例

    概述 该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式.其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库.异步任务通过回调处理. 注意 ...

  6. Android中MVC、MVP、MVVM具体解释

    前言 今天有时间就刚好有想写关于这几个名词.对于我来说.事实上这么多名词.思想归根究竟就是要依据项目实际.人员配置来做合理优化,既不能纸上谈兵.又不能畏惧不前.那么合理分阶段架构和完好代码才是关键,本 ...

  7. android中MVC,MVP和MVVM三种模式详解析

    我们都知道,Android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的.虽然我们项目用到 ...

  8. Android中的MVP架构初探

    说来羞愧,MVP的架构模式已经在Android领域出现一两年了.可是到今天自己才開始Android领域中的MVP架构征程. 闲话不多说,開始吧. 一.架构演变概述 我记得我找第一份工作时,面试官问我& ...

  9. Android架构(一)MVP架构在Android中的实践

    Android架构(一)MVP架构在Android中的实践 https://www.300168.com/yidong/show-2790.html   核心提示:为什么要重视程序的架构设计 对程序进 ...

  10. 【腾讯Bugly干货分享】一步一步实现Android的MVP框架

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44 内容大纲: Android 开发 ...

随机推荐

  1. Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板

    2025跨平台ai实战electron35+vite6+arco仿DeepSeek/豆包ai流式打字聊天助手. electron-deepseek-chat:实战ai大模型对话,基于vue3.5+el ...

  2. PC端网页/web通过自定义协议唤起启动windows桌面应用

    PC端网页/web通过自定义协议唤起启动windows桌面应用 步骤: 写注册表 调用 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\ ...

  3. EFCore先DBFirst,再CodeFirst(针对老项目迁移)

    参照文章: CodeFirst命令介绍:Scaffold-DbContext 命令使用 - 跟着阿笨一起玩.NET - 博客园 (cnblogs.com) 整体流程介绍:NetCore 中 EFcor ...

  4. VUE环境搭建(一)——NPM安装

    VUE环境搭建--NPM安装 npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包. vu ...

  5. 【代码】百度语音API|Python|文本朗读

    百度语音合成官方教程_AI开放平台 百度语音合成官方demo_github.com 简单地写了一个按段落朗读文本的demo:DEMO链接_gitee.com. 有时候会请求不到数据,不知道是网络原因还 ...

  6. Web前端入门第 46 问:CSS 中的数学函数不要只会 calc

    数学函数可以用来做什么? 最基础的当然是用来进行四则运算了,再进一步可以用来平方,对数,幂,绝对值,取余等,当然还可以用来计算三角函数. CSS 中的数学函数 灵活运用 CSS 中的数学函数,可以抛弃 ...

  7. SQL优化 - 同比计算

    记录一次SQL优化, 在计算同比的时候. 就太久没有写语句了, 能力在逐渐下滑, 思维也是, 感觉还是有点可怕的. 自从转业务以来, 就基本没有碰过代码这方面了. 甚至连 SQL 都开始要搜索了. 而 ...

  8. 【从0到1800 Star】90天,我用0预算推广了一个C语言项目

    亲爱的朋友们,我想和你们分享一下这90多天的开发旅程,虽然不涉及具体的技术部分,但我相信这些经验对你的项目会有所帮助哦 Catime是如何在大约90天内从0做到1800+ star的呢?其中最主要的原 ...

  9. java.sql.sqlexception: access denied for user ‘***‘@‘localhost‘ (using password: yes)

    参考文章: 0.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的解决办法 1.M ...

  10. 线下IDC数据中心迁移至阿里云详细方案

    一.迁移前准备 1. 迁移规划 资源评估 统计需迁移的数据库类型.版本.数据量(如 MySQL 5.7.SQL Server 2019.文件存储系统等). 评估应用依赖关系,明确停机窗口(建议业务低峰 ...