Android开发—重构BMI应用程序—MVC模式

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:重构BMI应用程序

* 作 者: 雷恒鑫
* 完成日期: 2012 年 08 月  08   日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:

* 程序头部的注释结束

*/

 

“MVC”模式指的是将应用程序的组成分成3个主要部分。分别是存储内容的“Model”(模型)、负责显示的“View”(视图)、控制程序操作的“Controller”(控制器)。编写时将这3个相对独立又彼此相关的部分区隔开来,有助于程序的设计与维护。

 

以下是利用“MVC”模式修改前的完整的BMI程序:

 

Bmi.java

package com.demo.android.bmi;

import java.text.DecimalFormat;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Bmi extends Activity {
	/**
	 * Called when the activity is first created.
	 * 
	 * @param <calcBMI>
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// Listen for button clicks
		Button button = (Button) findViewById(R.id.submit);
		button.setOnClickListener(calcBMI);
	}

	private OnClickListener calcBMI = new OnClickListener() {
		public void onClick(View v) {
			DecimalFormat nf = new DecimalFormat("0.00");
			EditText fieldheight = (EditText) findViewById(R.id.height);
			EditText fieldweight = (EditText) findViewById(R.id.weight);
			double height = Double
					.parseDouble(fieldheight.getText().toString()) / 100;
			double weight = Double
					.parseDouble(fieldweight.getText().toString());
			double BMI = weight / (height * height);

			TextView result = (TextView) findViewById(R.id.result);
			result.setText("Your BMI is " + nf.format(BMI));

			// Give health advice
			TextView fieldsuggest = (TextView) findViewById(R.id.suggest);
			if (BMI > 25) {
				fieldsuggest.setText(R.string.advice_heavy);
			} else if (BMI < 20) {
				fieldsuggest.setText(R.string.advice_light);
			} else {
				fieldsuggest.setText(R.string.advice_average);
			}
		}
	};

}


 

①首先,可以应用“MVC模式”,将声明界面组件(按钮、数字字段)、指定负责函数等动作提取出来,将“onCreate”函数改写如下:

 

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		findViews();
		setListensers();
		
		// Listen for button clicks
		//Button button = (Button) findViewById(R.id.submit);
		//button.setOnClickListener(calcBMI);
	}


 

②把声明与查找界面组件和为特定界面组件添加控制流程的两段程序代码,分开整理成两段函数。将“声明与查找界面组件”的部分写成一个独立的“findView”函数:

 

private Button button_calc;
	private EditText field_height;
	private EditText field_weight;
private void findViews(){
		button_calc = (Button)findViewById(R.id.submit);
		field_height = (EditText)findViewById(R.id.height);
		field_weight = (EditText)findViewById(R.id.weight);
}

 

③也可以顺便将很没个性的按钮“button”改名为“calcbutton”,以后再程序中一看到“calcbutton”,就知道是一个按下后将开始进行计算工作的按钮。

④同样滴,也可以将“为特定界面组件添加控制流程”(按钮)的负责函数独立出来:

 

// Listen for button clicks
	private void setListensers(){
		button_calc.setOnClickListener(calcBMI);
	}


 

通过以上4步,我们就将程序逻辑与界面组件的声明分离开来,达到重构的目的。

 

下面是通过“MVC模式”重构后的完整的Bmi.java程序代码:

 

package com.demo.android.bmi;

import java.text.DecimalFormat;

import android.app.Activity;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Bmi extends Activity {
	/**
	 * Called when the activity is first created.
	 * 
	 * @param <calcBMI>
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		findViews();
		setListensers();
		
		// Listen for button clicks
		//Button button = (Button) findViewById(R.id.submit);
		//button.setOnClickListener(calcBMI);
	}
	private Button button_calc;
	private EditText field_height;
	private EditText field_weight;
	private TextView view_result;
	private TextView view_suggest;
	
	private void findViews(){
		button_calc = (Button)findViewById(R.id.submit);
		field_height = (EditText)findViewById(R.id.height);
		field_weight = (EditText)findViewById(R.id.weight);
		view_result = (TextView)findViewById(R.id.result);
		view_suggest = (TextView)findViewById(R.id.suggest);
	}
	// Listen for button clicks
	private void setListensers(){
		button_calc.setOnClickListener(calcBMI);
	}
	private OnClickListener calcBMI = new OnClickListener() {
		public void onClick(View v) {
			DecimalFormat nf = new DecimalFormat("0.00");
			EditText fieldheight = (EditText) findViewById(R.id.height);
			EditText fieldweight = (EditText) findViewById(R.id.weight);
			double height = Double
					.parseDouble(fieldheight.getText().toString()) / 100;
			double weight = Double
					.parseDouble(fieldweight.getText().toString());
			double BMI = weight / (height * height);

			//TextView result = (TextView) findViewById(R.id.result);
			//result.setText("Your BMI is " + nf.format(BMI));
			//Present result
			view_result.setText(getText(R.string.bmi_result)+nf.format(BMI));
			// Give health advice
			TextView fieldsuggest = (TextView) findViewById(R.id.suggest);
			if (BMI > 25) {
				fieldsuggest.setText(R.string.advice_heavy);
			} else if (BMI < 20) {
				fieldsuggest.setText(R.string.advice_light);
			} else {
				fieldsuggest.setText(R.string.advice_average);
			}
		}
	};

}


 

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要快速入门Android应用开发,首先需要掌握以下几个方面: 1. Java基础知识:Android应用开发使用Java语言编写,所以需要先学习Java基础知识,包括数据类型、变量、运算符、控制语句等。 2. Android开发环境:下载并安装Android Studio集成开发环境,安装好后可以创建Android项目并进行开发。学习使用Android Studio的各种功能和设置。 3. Android应用架构:了解Android应用的架构,包括Activity、Service、Broadcast Receiver和Content Provider四大组件,了解它们的作用和使用方法。 4. Android界面设计:Android应用的界面设计需要使用XML布局文件编写,学习使用Android Studio自带的布局设计工具和相关属性,能够实现简单的界面设计。 5. Android应用开发流程:学习了解Android应用开发流程,包括界面设计、数据处理、写入和读取数据、调试和测试等。 6. Android应用调试与测试:掌握Android应用的调试和测试方法,包括使用模拟器和真机测试、使用logcat查看日志等。 除此之外,还可以参与一些在线课程或社区,多看文档和视频,不断练习和尝试。在开发过程中也要学会团队协作,积极参与开源社区,分享经验和技巧,不断交流和学习。让自己的开发技能更进一步。 ### 回答2: Android应用开发是一个非常有趣的领域,越来越多的人开始学习并进行开发。那么如何快速入门android应用开发呢? 1. 学习Java语言基础知识:Android应用是基于Java语言开发的,掌握Java语言基础是快速入门Android应用开发的关键。 2. 下载并掌握Android Studio:这是一款专门用于Android应用开发的IDE,它提供丰富的工具和资源帮助开发者进行开发。 3. 学习Android应用组件:Android应用由多个组件构成,如Activity、Service、Broadcast Receiver和Content Provider等,学习这些组件并掌握它们的作用是快速入门Android应用开发的另一关键。 4. 掌握布局和UI设计:Android应用的界面设计非常重要,你需要掌握常用的布局和UI设计元素,如TextView、EditText、Button、ImageView并了解它们的属性和使用场景。 5. 学习SQLite数据库操作:Android应用通常需要访问和管理数据,SQLite是Android系统默认的轻量级数据库,学习如何使用它可以快速入门Android应用开发。 6. 初步了解网络编程:现代Android应用通常需要访问网络接口获取数据或实现即时通信,初步了解网络编程是快速入门Android应用开发的另一关键。 7. 动手实践和不断重构:最后,为了快速入门Android应用开发,动手实践非常重要。通过实践来加深对知识点的理解和掌握,同时不断重构代码来提升代码的质量和效率。 通过以上方法,你可以快速入门Android应用开发并开始开发自己的应用。记住,学习需要时间和耐心,不要怕失败,最重要的是一定要坚持下去! ### 回答3: 要快速入门Android应用开发,您需要掌握以下几个方面: 1. 学习Java编程语言。Android应用程序是使用Java语言编写的,因此了解其语法和概念非常重要。 2. 安装Android Studio并学习使用它。Android Studio是开发Android应用所必需的IDE。 3. 学习Android基础知识。了解Android应用程序的主要组件,例如活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供程序(Content Provider),能够为您的应用程序的构建打下坚实的基础。 4. 学习XML布局。应用程序的用户界面是使用XML布局文件构建的,因此对XML语言和布局文件的了解也很重要。 5. 学习如何使用Android SDK编写代码。 Android提供了丰富的API以及相关的库来支持Android应用程序开发,了解如何使用这些API和库并将其应用到您的应用程序中非常重要。 6. 了解如何测试您的应用程序。您可以使用Android Studio帮助您测试应用程序。 总之,快速入门Android应用程序开发需要大量学习和实践。了解Java编程语言、Android基础知识、XML布局和Android SDK,以及如何测试您的应用程序是非常重要的。还需多多实践和不断学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值