Android入门(五):程序架构——MVC设计模式在Android中的应用

  刚刚接触编程的的人,可能会这样认为:只要代码写完了能够跑起来就算完工了。如果只是写一个小程序,“能够跑起来”这样的标准也就可以了,但是如果你是在公司进行程序的开发,那么仅仅让程序成功的跑起来是不行的,事情远没有你想的这么简单。一个商业项目的代码少则数万行,多则上百万甚至更多,这种商业项目不可能仅仅靠一个人完成,要想高效高质量的完成开发工作,就需要一个专业的开发团队了。在团队中,有人负责项目的架构设计,有些人负责程序代码的编写….要想像这样做到项目开发的分工就必须在程序的结构上做适当的安排。

  举个例子,大多数商业化软件都有不同的语言版本,这些不同语言版本的软件在功能上是完全一样的,如果我们能够把软件上的文字与程序分离开来,这样就能够很方便的发布不同语言的版本了。

  MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

  现在,我们在之前的代码基础上,进行一些改动,把MVC模式应用的程序当中。

  1.新增一个setupViewCompoent()方法负责运行View相关的所用程序代码,包括取得接口布局文件中的接口组件和设置接口组件中事件处理程序。

  2.把写在程序中的字符串放在strings.xml资源文件中,定义在strings.xml资源文件中的字符串在经过编译后会放到资源类R中,然后程序再从资源类R中取得所需要的字符          串。

  3.在main.xml接口布局文件中,我们把里面的提示文字定义在strings.xml资源文件中,然后再到资源类R中取出字符串使用。代码如下:

    strings.xml资源文件:

  <resources>      <string name="app_name">健身咨询</string>      <string name="promptSex">性别:</string>      <string name="promptAge">年龄:</string>      <string name="promptBtnDoSug">健身咨询</string>      <string name="sugResult">结果:</string>      <string name="sugRun">跑步</string>      <string name="sugSwim">游泳</string>      <string name="sugSuggestion">健康咨询</string>      <string name="sexMale">男</string>  </resources>

  main.xml文件:
  <?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"          android:orientation="vertical"          android:layout_width="match_parent"          android:layout_height="match_parent">

    <TextView          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:text="@string/promptSex"/>      <EditText          android:id="@+id/edtSex"          android:layout_width="match_parent"          android:layout_height="wrap_content" />          android:text=""/>      <TextView          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:inputType="text"          android:text="@string/promptAge"/>      <EditText          android:id="@+id/edtAge"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:inputType="number"          android:text=""/>      <Button          android:id="@+id/btnDoSug"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:text="@string/promptBtnDoSug"/>      <TextView          android:id="@+id/txtResult"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:text="@string/sugResult"/>     </LinearLayout>


修改程序代码:
  import android.app.Activity;  import android.os.Bundle;  import android.view.View;  import android.widget.Button;  import android.widget.EditText;  import android.widget.TextView;

  public class MainActivity extends Activity {

      private Button btnDoSug;      private EditText edtSex, edtAge;      private TextView txtResult;

      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          setupViewComponent();      }

      private void setupViewComponent(){          //从资源类R中取得接口组件          btnDoSug = (Button)findViewById(R.id.btnDoSug);          edtSex = (EditText)findViewById(R.id.edtSex);         edtAge = (EditText)findViewById(R.id.edtAge);          txtResult = (TextView)findViewById(R.id.txtResult);          //button组件事件的listener          btnDoSug.setOnClickListener(btnDoSugOnClick);      }

      private Button.OnClickListener btnDoSugOnClick = new Button.OnClickListener(){

          public void onClick(View view){              //点击按钮后执行的代码              String strSex = edtSex.getText().toString();              int iAge = Integer.parseInt(edtAge.getText().toString());

              String strSug = "结果:";              if(strSex.equals("男"))              {                  if(iAge < 28)                      strSug += getString(R.string.sugRun);                  else if(iAge > 33)                          strSug += getString(R.string.sugRun);                      else                      strSug += getString(R.string.sugRun);              }              else              {                  if(iAge < 28)                      strSug += getString(R.string.sugRun);                  else if(iAge > 33)                      strSug += getString(R.string.sugSwim);                  else                      strSug += getString(R.string.sugSwim);              }

              txtResult.setText(strSug);          }      };  }
 

    

时间: 2024-10-14 21:00:28

Android入门(五):程序架构——MVC设计模式在Android中的应用的相关文章

Android开发之程序员必须要懂得Android的重要设计理念2

上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,只看到了一位博友在下面留言期待下一篇文章的发表,为了这小小的唯一支持,我决定继续把后面的8个要点介绍一下,自己也潜心反省一下,自己的理解是不是太浅薄. 二.增加易用性 (6)一样的标志,一样的功能 我们的程序 应该帮助人们通过视觉辨别就可以轻松判断该图案或者按钮代表着怎样的功能,能清晰的分辨出来,而不是让用户费劲脑筋的去猜想这个按钮可能代表什么功能.我们的程序应该极力避免一种情况,类似的图案或者按钮却在不同的地方,代

MVC设计模式在网站中的应用

MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同的视图来展示,只需要修改视图中的代码即可,对于模型和控制器的代码,则不需要做改动,即可满足要求,使得对代码的修改非常方便. 易用性 用户可以直接在商品展示界面中将商品添加进购物车,直接点开购物车就可以看到已经添加的商品:删除某一件商品时,也可以直接在商品的后面点击删除,确认之后,即可删除. 安全性

Android开发之程序员必须要懂得Android的重要设计理念

前几天去参加了带着自己的作品去参加服务外包大赛,因为签位抽到的比较靠后就等待了蛮久,就跟坐在前面的一起参赛的选手开始讨论Android的开发经验,各自给对方展示了自己的作品,小伙伴就建议我看一下官方Design的设计原则会很有帮助,今天就想根据自己的理解把其设计原则分享给大家.总共是三大点,17小点. 一.让用户沉醉 (1)注重设计的细节 精致的界面 , 设计恰当动画或适时的音响效果都是一种快乐体验.微妙的影响将导致一种游刃有余的感觉,感觉到一股强大的力量就在眼前. (2)尽可能使用形象化的图标

Android入门(五)UI-单位与尺寸、ListView

原文链接:http://www.orlion.ga/453/ 一.单位与尺寸 布局文件中一共有以下单位供选择:px,pt,dp,sp px:是像素,屏幕中可见的最小元素单位. pt:是磅,1磅等于1/72英寸,一般pt都会作为字体的单位来使用. 同样px数的控件在不同分辨率上的手机屏幕上的效果是不同的,pt与px的情况差不多 dp:是密度无关像素,也称为dip,与px相比,它在不同密度的屏幕中的显示比例保持一致 sp:是可伸缩像素,采用了与dp同样的设计理念,解决了文字大小的适配问题 andro

前端之Android入门(2) – 程序目录及UI简介

一,Android程序的目录结构 打开我们上次创建的HelloWorld项目,会看到一个目录结构,这就是Android的程序目录,这些目录的大致作用如下: src:源码的组织管理目录. gen:自动生成的目录,会生成一些重要的文件,如R.java,该目录一般不需要我们编写. assets:该目录文件不会被编译成二进制编码,多用于放音视频,文本等原始格式文件. bin:用于存放编译后的Java文件及apk文件. libs:存放Android的源码包或需要引入的源码包. res:程序资源的所在目录,

MVC设计模式(持续更新中)

MVC设计模式--->英文全称为: model(模型)  View (视图)  Controller(控制)   MVC是一种设计思想.这种思想强调实现模型(Model).视图(View)和控制器的分离.这种思想是如何作用于web的呢?实际上,我们在web开发中引入MVC思想,想要达到的目的是:实现UI层和业务逻辑层分离——控制器是为了实现上述目的而存在的! .MVC提供了让模型和视图相分离的思路——引入控制器.我们把页面跳转关系管理.表单数据的封装及验证.国际化等任务交给控制器处理.因此,也不

.NET 开源了,Visual Studio 开始支持 Android 和 iOS 程序编写并自带 Android 模拟器【转载】

北京时间今天(2014年11月12日)凌晨的--.NET 开源.集成 Clang 和 LLVM 并且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之一的 IDE 正式支持编写 Android 和 iOS 程序. 微软今天宣布,在所有的主要平台上将对开发者开放 Visual Studio 和 .NET.从 Core .NET Server stack,新的免费且功能完整的 Visual Studio 版本,以及下一代 Visual Studio 和 .NET

程序架构探讨—001 查询语句中多段select语句的方案

有时候,我们需要做多条件查询,多个条件为"或"的关系,分类查询等,一般会用到多段select语句,然后用union或者union all进行连接,进而查出需要的结果.例如,select a.id as id,a.name as name,a.age as agefrom scama.table_name2 awhere 1=1 union all select b.sn as id,b.name as name,b.age as agefrom scama.table_name2 bw

[android数据库同步]【架构】一种Android界面数据同步刷新机制

我们来谈谈客户端界面的数据同步问题. 界面数据同步的需求 比如,下面的AB两个界面中都显示了学生Leslie的信息,当我们在A界面修改学生学号时,我们希望回到B界面时,学生的信息也能跟着改变,才能保证业务数据的正确和一致性. 这就涉及到数据的同步和刷新问题. 主界面显示了学生和老师的信息 另一个界面也显示了学生的信息 刷新数据时都要从数据源再次请求数据吗? 如今手机应用的数据几乎都来自网络(或者本地数据库).假如我们在A界面上修改了学生的信息并同步到网络,若回到B界面需要刷新该学生的信息,再次调