demo: EditText計算身高體重,使用觀察者模式實現
1.內部類實現
package com.zhg.day0102;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.LinearLayout.LayoutParams;
public class Day01_02Activity extends Activity {
private TextView tvHeight, tvWeight;
private EditText etHeight, etWeight;
private Button btnCalc, btnCancle;
private LinearLayout root, row1, row2, row3;
/**內部類重寫OnClickListener方法
* 创建一个监听器类,实现OnClickListener接口
*
* @author Administrator
*
*/
private class ButtonClickListener implements OnClickListener {
/**
* 单击事件的处理方法
*
*/
public void onClick(View v) {
// TODO Auto-generated method stub
String text = ((Button) v).getText().toString();
if ("计算".equals(text)) {
double height = 0;
double weight = 0;
//获取身高
if(etHeight.getText()!=null && !"".equals(etHeight.getText().toString().trim())){
height = Double.parseDouble(etHeight.getText().toString());
}
//获取体重
if(etWeight.getText()!=null && !"".equals(etWeight.getText().toString().trim())){
weight = Double.parseDouble(etWeight.getText().toString());
}
Log.i("info", "height=" + height);
Log.i("info", "weight=" + weight);
//计算bmi值
double bmi = weight/(height*height/10000);
Log.i("info", "bmi=" + bmi);
//根据bmi值 输入身材提示
if(bmi<18){
Toast.makeText(Day01_02Activity.this, "偏瘦", 3000).show();
}else if(bmi<=25){
Toast.makeText(Day01_02Activity.this, "标准", 3000).show();
}else if(bmi<=30){
Toast.makeText(Day01_02Activity.this, "偏胖", 3000).show();
}
}else{//单击btnCancel
//清空文本框
etHeight.setText("");
etWeight.setText("");
}
}
}
private void setupView() {
tvHeight = new TextView(this);
tvHeight.setText("身高");
etHeight = new EditText(this);
LayoutParams p1 = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1.0f);
// etHeight.setLayoutParams(p1);
row1 = new LinearLayout(this);
row1.addView(tvHeight);
row1.addView(etHeight, p1);
tvWeight = new TextView(this);
tvWeight.setText("体重");
etWeight = new EditText(this);
etWeight.setLayoutParams(p1);
row2 = new LinearLayout(this);
row2.addView(tvWeight);
row2.addView(etWeight);
btnCalc = new Button(this);
btnCalc.setText("计算");
btnCancle = new Button(this);
btnCancle.setText("取消");
row3 = new LinearLayout(this);
row3.addView(btnCalc, p1);
row3.addView(btnCancle, p1);
root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
root.addView(row1);
root.addView(row2);
root.addView(row3);
setContentView(root);
}
private void addListener() {
// 创建监听器对象
ButtonClickListener listener = new ButtonClickListener();
// 注册监听对象到要监听的事件源
btnCalc.setOnClickListener(listener);
btnCancle.setOnClickListener(listener);
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
setupView();
addListener();
}
}
2.匿名類實現
package com.tarena.day0104;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.LinearLayout.LayoutParams;
public class Day01_04Activity extends Activity {
private TextView tvHeight, tvWeight;
private EditText etHeight, etWeight;
private Button btnCalc, btnCancle;
private LinearLayout root, row1, row2, row3;
//創建介面
private void setupView() {
tvHeight = new TextView(this);
tvHeight.setText("身高");
etHeight = new EditText(this);
LayoutParams p1 = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1.0f);
// etHeight.setLayoutParams(p1);
row1 = new LinearLayout(this);
row1.addView(tvHeight);
row1.addView(etHeight, p1);
tvWeight = new TextView(this);
tvWeight.setText("体重");
etWeight = new EditText(this);
etWeight.setLayoutParams(p1);
row2 = new LinearLayout(this);
row2.addView(tvWeight);
row2.addView(etWeight);
btnCalc = new Button(this);
btnCalc.setText("计算");
btnCancle = new Button(this);
btnCancle.setText("取消");
row3 = new LinearLayout(this);
row3.addView(btnCalc, p1);
row3.addView(btnCancle, p1);
root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
root.addView(row1);
root.addView(row2);
root.addView(row3);
setContentView(root);
}
//創建監聽方法
private void addListener() {
// 注册监听对象到要监听的事件源,匿名類實現,只調用一次
btnCalc.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(Day01_04Activity.this, "btnCalc被单击", 3000).show();
}
});
btnCancle.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(Day01_04Activity.this, "btnCancel被单击", 3000).show();
}
});
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//調用創建介面方法
setupView();
//調用監聽方法
addListener();
}
}
3.直接實現
package com.zhg.day0103;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.LinearLayout.LayoutParams;
public class Day01_03Activity extends Activity implements OnClickListener{
private TextView tvHeight, tvWeight;
private EditText etHeight, etWeight;
private Button btnCalc, btnCancle;
private LinearLayout root, row1, row2, row3;
public void onClick(View v) {
//取得文本框的值
String text = ((Button) v).getText().toString();
//觸發點擊事件
if ("计算".equals(text)) {
Toast.makeText(Day01_03Activity.this, "btnCalc按钮被单击", 3000)
.show();
}else{
Toast.makeText(Day01_03Activity.this, "btnCancel按钮被单击", 3000)
.show();
}
}
private void setupView() {
tvHeight = new TextView(this);
tvHeight.setText("身高");
etHeight = new EditText(this);
LayoutParams p1 = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1.0f);
// etHeight.setLayoutParams(p1);
row1 = new LinearLayout(this);
row1.addView(tvHeight);
row1.addView(etHeight, p1);
tvWeight = new TextView(this);
tvWeight.setText("体重");
etWeight = new EditText(this);
etWeight.setLayoutParams(p1);
row2 = new LinearLayout(this);
row2.addView(tvWeight);
row2.addView(etWeight);
btnCalc = new Button(this);
btnCalc.setText("计算");
btnCancle = new Button(this);
btnCancle.setText("取消");
row3 = new LinearLayout(this);
row3.addView(btnCalc, p1);
row3.addView(btnCancle, p1);
root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
root.addView(row1);
root.addView(row2);
root.addView(row3);
setContentView(root);
}
private void addListener() {
// 注册监听对象到要监听的事件源
btnCalc.setOnClickListener(this);
btnCancle.setOnClickListener(this);
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
setupView();
addListener();
}
}