Android MVC模式实例(一)

Android 架构MVC MVP MVVM+实例,意外收获字节跳动内部资料 很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到些问题,比如学了段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了套。很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到些问题,比如学了段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了套。* 功能:当Model层得到请求的结果,回调Presenter层,让Presenter层调用View层的接口方法。//User实体类; 阅读详情


很多Android的入门书籍,在前面介绍完布局后就会逐个介绍组件,然后开始编写组件使用的例子。每每到此时小伙伴们都可能会有些疑问:是否应该先啃完一本《Java编程思想》学点 Java 知识呢?这些组件会使用了,但如何更好组织起来呢?

其实,Android 和 iOS 已经把应用层级别的东西封装得比较简单易用,也配有丰富的文档与之对应,所以倒不必担心如何使用。而实际上,我想让大家通过这个系列的文章更关注和学习下面两点,我也会在例子的选取上多涉及这些方面的知识。

  • 编程的思想。正如学会英语,并不一定就能写出好的英文文章。
  • 查找学习的能力。知道如何发现问题的关键点,然后去找方法解决。

MVC 是软件工程中最基本的设计模式,也是组织良好代码的基础,Android 和 iOS 中也一样,所以在接下来的三篇文章中,将会介绍如何通过 MVC 模式制作一个简易计算器应用,Let’s Go!

这个高大上(偷笑)的计算器界面如下,这次先完成界面部分。

android_3_calculator

一,界面还原准备

首先,打开 Eclipse,创建一个 Android 工程,并命名为:Calculator(如下图)

android_3_new

此时,会默认打开 MainActivity.java 和 activity_main.xml 两个文件,activity_main.xml 为界面布局文件,MainActivity.java 为程序入口文件(这次先不用编写)。
同时,我们将 res > values > styles.xml 文件打开,activity_main.xml 和 styles.xml 之间的关系就相当于 html 和 css。

android_3_files

我们知道,Android 中有 LinearLayout,RelativeLayout 等布局元素,这次我们就先用 LinearLayout 来完成界面的布局。

:) 首先等我请出本系列课程的助教:Google 大神

LinearLayout(线性布局),大神给出的定义是:
将子视图元素按水平或垂直方向一个接一个排列的视图组合(布局)。

从上一篇文章中我们知道 View 类由两类属性控制其视觉呈现,所以 LinearLayout 有其自有属性,而处于其内的子元素则可以使用 LinearLayout.LayoutParams 定义的属性,那怎样去找这些属性呢?当然是去问我们的大神了。

LinearLayout 类参考

从 Summary 的 XML Attributes 中可以知道这些属性的信息概要,点击每个属性,下面都有详细的介绍。

android_3_attribute1

几个常用属性:
1,android:orientation  通过设置值为 “horizontal” 或 “vertical” 让子元素按水平或垂直排列。
2,android:gravity  设置其内容(文字、视图)在该元素内的位置,通过 “|” 号分隔多个值(top,bottom,left,right,center,center_vertical,center_horizontal)。
3,android:baselineAligned  设置为”false”则统一对齐的基线,主要用于设置了不同 gravity 的可显示文字的 View 元素。这里先不展开。

android_3_example1

那 LinearLayout.LayoutParams 有什么属性呢,同样我们从大神那找到:

LinearLayout.LayoutParams 类参考

android_3_attribute2

从上篇文章可知 xxx.LayoutParams 定义的属性是用于布局内的元素上的。

1,android:layout_gravity  让子元素设置其相对于父元素中的位置,其设值和 android:gravity 一样。可能有人就会疑问了,那这两个属性有什么区别呢?
简单点理解,android:gravity 是应用于自身所包含的内容(这个内容可以是文字或子视图),而 android:layout_gravity 则是应用在自身。

(这里还要指出一个大家在线性布局中可能会遇到的问题:android:layout_gravity 设值失效问题。例如在设定了 android:orientation = “vertical” 的 LinearLayout 中,设定一个 TextView 的 layout_grivity = “top” 或者 layout_grivity = “bottom” 是失效的。同样,在 android:orientation = “horizontal” 中设定元素的 “left” 或 “right” 也会一样。为什么会这样呢?就留给小伙伴们思考了,其实想想这样设定还算是合理的。)

2,android:layout_weight  大神也有偷懒的时候,这里竟然没有说明。大神把它放在另一个地方介绍了。性质类似 Css 的弹性盒,对 -webkit-flex 设值,相当于显示权重。情况会很多,篇幅问题只能留在以后的文章加以说明。这次界面制作使用 layout_weight 的策略是:每个元素都占用“足够大的空间”,然后各自权重为1,这样一来就平均了。

android_3_example2

请小伙伴们再看一次线性布局的介绍,   LinearLayout 线性布局

在准备部分,我没有直接列出所有属性来介绍。而是更想展示如何去思考和查找解决办法的过程。对于文章没展开部分,可以去查一查,培养阅读文档的习惯 :)

二,界面的制作

前面废话多了, 既然用线性布局,界面就直接用一个 TextView + 4个LinearLayout 垂直排列做布局。如下图:

android_3_layout1

正如把 css 写在 html 中是“下流”的写法,那么我们应该“上流”点,把样式分离写在 styles.xml 中,activity_main.xml 中则通过@style/{ClassName} 的方式留下我们锚点则可。
这里,Eclipse 会提示xml 中存在若干错误,因为我们还没在 styles.xml 中建立相应的资源名,不用理会。也会提示了一个修改建议,说把字符硬编码进TextView了,也可不理。

此时转到 styles.xml 中,建立起相应的“类名”,(注意:这里先把 AppTheme 设置为:android:Theme.NoTitleBar )

android_3_style1

建立完“类名”后,我们就可以编写<body>的样式了,这里设置为垂直排列。
我们还将建立一个资源文件,用于设定颜色值,就如同 strings.xml 的作用一样。

android_3_color1

android_3_color2

android_3_color3

这里先把我们会用到的颜色值都设定了,包括按钮和文字的颜色。

android_3_color4

继续编写我们的 styles.xml 文件,通过 layout_weight 的设定,我们将 TextView 和 4个 LinearLayout 平分屏幕的空间。并且为我们的 TextView 添加相应的样式,而准备用于放置按钮的 LinearLayout 则设定为水平排列:

android_3_style2

此时转到 activity_main.xml 并在 xml 编辑框底部点选 Graphical Layout 这个tab,可以预览还原了的界面。和我们预想一样,TextView 占了空间的1/5。

android_3_ui1

好了,可以开始编写我们的按钮了,我们将用 Button 元素实现按钮,用 btn_operand 命名操作数的样式,用 btn_operate 命名操作符的样式,并且 btn_operate 将会继承 btn_operand 的样式,然后重新设置背景色和文字色,这些就和使用 Css 一样。

android_3_ui2

android_3_ui3

预览一下界面。和我们设想的一样。

android_3_ui4

剩下的就交由小伙伴继续完成啦 :)   在小伙伴们尝试制作界面的时间,我会尽快准备好下一篇文章,大家有什么意见都可以留言给我。另外,鉴于个人能力有限,在文章中未免会出现错误,欢迎大家的指正,感谢大家的支持!时间原因,没能及时回复的留言也先说声对不起!

后话:

下一篇文章开始将会涉及 Java 代码,有条件的同学请备一本《Java编程思想》,机械工业出版社的,网上应该有很多 pdf ,当然不会让你啃了它,太浪费时间。因为在编写代码的过程中,或多或少会涉及 Java 的东西,我会指出需要看的那部分,从而把基础的 Java 知识学了。另外,应小伙伴们的要求,我会找地方提供编写的代码下载。题外话,《Java编程思想》的确是本好书,作为参考或者学习也好,可以考虑备一本。

Android MVP 实践 Dagger + activity/fragment + viewDelegate 前言:随着Android客户端的深入发展,Android客户端MVC开发模式中,View与Model层耦合严重, 导致拓展困难,多人协作的困难。如何让View与业务逻辑脱离开来。大神给出了MVP与MVVM解决方案。 MVC: C/S : 随着web发展: B/S :MVC架构 controller层使用struct,逻辑与view分开 C/S:MVP C/S的MVC代码 阅读详情

相关推荐

Android】安卓开发中的MVP架构模式与应用实例

安卓开发中的MVP架构模式实例 文章目录安卓开发中的MVP架构模式实例MVC架构模式的弊端MVP架构模式的特点MVP架构的关键点MVP架构的安卓应用实例创建新的项目修改String.xml文件activity_main.xml文件定义Contract接口Model类创建Presenter类在MainActivity文件中定义View的功能MVP架构模式的优略势优点缺点 在入门安卓开发的阶段,初学者经常会把所有业务逻辑都挤到MainActivity类中。这种做法最终会导致Activity的UI与应用数据处

ljinest 1628

android使用mvc小例子

这是个使用mvc应用框架开发的android应用小例子,适合初学者学习

Android平台MVC架构实战小项目示例

MVC(Model-View-Controller)作为种经典软件架构模式,在早期Android开发中被广泛采用。它通过将应用划分为数据模型(Model)用户界面(View)和控制逻辑(Controller)三个组件,实现关注点分离,提升代码可维护性与团队协作效率。在Android中,通常以Activity或Fragment充当Controller角色,XML布局文件作为View层,而Java/Kotlin类封装数据与业务逻辑构成Model层。

weixin_42400643的博客 587

android开发MVC框架demo

android封装开发框架,包含okhttp网络请求,butterknife和Gson封装工具类等,并且使用了MVC模式,里面编写了网络请求demo以及基类抽取

前端之Android入门(3):MVC模式()

很多Android的入门书籍,在前面介绍完布局后就会逐个介绍组件,然后开始编写组件使用的例子。每每到此时小伙伴们都可能会有些疑问:是否应该先啃完本《Java编程思想》学点 Java 知识呢?这些组件会使用了,但如何更好组织起来呢? 其实,Android 和 iOS 已经把应用层级别的东西封装得比较简单易用,也配有丰富的文档与之对应,所以倒不必担心如何使用。而实际上,我想让大家通...

weixin_34214500的博客 361

Android 架构MVC MVP MVVM+实例,爆火的Android面试题

//set or get … public User(String name, String password) { this.name = name; this.password = password; } } 3.MVCLoginActivity //用户点击事件 mvcBinding.mcvLogin.btnLogin.setOnClickListener(new View

ww11_aa的博客 2046

android mvc例子,Android MVC

概念MVC 全名 Model View Controller即Model(模型) View(视图) Controller(控制器)种软件设计典范,用种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。注:mvc、mvp、mvvm等是框架,工厂模式策略模式等是设计模式,两者不要混淆。这里推荐笔者另文MVP...

weixin_34098296的博客 471

架构MVC MVP MVVM

架构MVC、MVP、MVVM

qq_14931305的博客 231

Android开发框架模式(MVC、MVP、MVVM)实例解析

Android项目中,尤其是比较大型的项目开发中,模块内部的高聚合和模块间的低耦合性就显得尤为重要了。所以我们般情况下需要为项目设计种框架模式,通常情况下我们般用到的三种MVC、MVP、MVVM。 通过框架模式设计的项目能够极大的提高开发效率,提高项目的可维护性和可扩展性,另外在模块测试及问题定位上也提供了较大的便利。 接下来我们就对这三种框架模式进行讲解,并会重点讲解下比较常用的MV......

红日 1万+

MVC模式讲解与实例

MVC模式 1、概念 MVC模式(Model–view–controller)是软件工程中的种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。 2.1 MVC流程 1、View接受用户的交互...

JackiAndroid的专栏 6390

Android 安卓MVC架构

MVC文章目录引入原理我的理解我的Demo第步Bean第二步Modle第三步Controller第四步完成View 引入 本篇文章Github有提交 https://github.com/NorthernBrain/MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,种软件设计典范,用种业务逻辑、...

两行代码 踏踏实实de工作 6186

安卓中MVC模式的深度思索和实践()

这是个有关安卓MVC框架模式的短系列,目的是思索和分析安卓中MVC模式更为真实的面。 随着安卓开发这些年的发展,项目开发相关的框架模式直是个比较火的话题,度从传统忠实的MVC,聊到热火朝天的MVP,再到看似终极的MVVM,真有些百家争鸣的味道,是个好现象。不过呢,网上太多文章要么观点大同小异(ctrl+c+v),要么模棱两可,要么是铁杆粉丝不屑其它,而具有个人深度思考的文章却是较少。笔者呢,

CysionLiu的博客 2012

AndroidMVC MVP MVVM模式

学习Android的同学定要了解的三种开发模式,不然自己写的项目采用的什么模式都不清楚MVC,MVP,MVVM都是为了解决UI页面与逻辑代码分离而出现的模式,MVP和MVVM都是MVC的基础上演化而来MVC全名是Model View Controller,是模型(mV----odel)-视图(view)-控制器(controller)的缩写M——模型层(Model)负责处理数据的加载或者存储V——视图层(View)负责界面数据的展示,与用户进行交互C——控制器层(Controller)负责逻辑业务的处理在

Ai1114的博客 2万+

Android架构探究之MVC设计模式

Android框架探究之MVC设计模式1. 经典MVC模式介绍-Model-View-Controller2. Android的设计架构不同于经典MVC3. 在Android中如何实现标准的MVC设计架构?1. 首先我们创建个学生信息Bean类,StudentBean。和个接口 OnUpdateViewList作为M层处理完毕后给C层的回调。2. Activity里做两件事,1,绑定xml中的控件并监听点击事件。2,向C层提供更新V层UI的可调用方法。3. StudentController里做两件事,1

ruiruiddd的博客 2279

Android 架构MVC MVP MVVM+实例

MVC、MVP和MVVM是软件比较常用的三种软件架构,这三种架构的目的都是分离,避免将过多的逻辑全部堆积在个类中。

帅次的博客 5112

安卓Android 架构模式及UI布局设计

界面设计与程序逻辑分离:有利于并行安卓中的架构模式 **优势:** 1. 设计可扩展的应用程序,方便进行未来的更改和更新。 2. 实现模块化设计,提高代码质量,便于测试和维护。开发,后期修改界面时不需修改程序逻辑代码。设计模式MVC、MVP、MVVM

m0_74154295的博客 3894

Android安卓架构MVC、MVP、MVVM模式的概念与区别

MVC(Model-View-Controller)、MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)是三种常见的软件架构模式,它们的目的都是将应用程序的不同部分分离开来,以提高代码的可维护性、可扩展性和可测试性。在 Android 开发中,MVP(Model-View-Presenter)是种常用的架构模式,它是基于MVC模式的改进,旨在进步分离应用程序的各个组件,提高代码的可测试性和可维护性。同时,也使得代码更加清晰、简洁,降低了维护成本。

m0_74293254的博客 4219

Android:安卓学习笔记之MVC、MVP模式的简单理解和使用

Intent的理解和使用Intent的理解和使用1、什么是Intent参考 Intent的理解和使用 1、什么是Intent 参考 1、https://www.jianshu.com/p/9a6845b26856 2、https://blog.csdn.net/vector_yi/article/details/24719873?utm_source=tuicool 3、https://www.cnblogs.com/JustRun1983/p/3679827.html 4、https://www.cnbl

JMW1407的博客 2191
上一篇: MVC模式
下一篇: Android MVC模式实例(二)
kc专栏
博客等级 码龄15年 1174粉丝 287原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值