/*
* Copyright (c) 2011,431 studio. All rights reserved.
*
* 文件名称:Bmi.java
* 描 述:体质健康指数
*
* 版本历史:
* 1.
* 作者:431
* 日期:2011年8月06日
* 修改:首稿
*/
package com.demo.android.bmi;
import java.text.DecimalFormat;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
/*
* 类介绍:程序入口地址
* AndroidManifest.xml文件的activity android:name="."决定
* @Override关键字的函数,一般是由系统调用的
*/
public class Bmi extends Activity {
private static final String TAG = "Bmi"; //log标签
protected static final int MENU_ABOUT = Menu.FIRST; //菜单
protected static final int MENU_QUIT = Menu.FIRST + 1; //菜单
private static final String PREF = "BMI_PREF"; //键
private static final String PREF_HEIGHT = "BMI_Height"; //键项
private Button m_button_calc; //计算
private EditText m_field_height; //高输入
private EditText m_field_weight; //宽输入
private TextView m_view_result; //结果输出
private TextView m_view_suggest; //建议输出
/*
* 函数介绍:当此activity第一次被创建时,此函数调用
* 输入参数:savedInstanceState,曾保存的实例状态
* 输出参数:无
* 返回值 :无
*/
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v(TAG, "onCreate enter");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findCtrlsFromID();
setListensers();
restorePrefs();
Log.v(TAG, "onCreate exit");
}
/*
* 函数介绍:从资源里获取交互界面的控件
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
private void findCtrlsFromID() {
Log.v(TAG, "findCtrlsFromID enter");
m_button_calc = (Button)findViewById(R.id.submit);
m_field_height = (EditText)findViewById(R.id.height);
m_field_weight = (EditText)findViewById(R.id.weight);
m_view_result = (TextView)findViewById(R.id.result);
m_view_suggest = (TextView)findViewById(R.id.suggest);
Log.v(TAG, "findCtrlsFromID exit");
}
/*
* 函数介绍:按钮响应函数
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
private void setListensers() {
Log.v(TAG, "setListensers enter");
m_button_calc.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "setListensers : onClick(calc button) enter");
DecimalFormat nf = new DecimalFormat("0.00");
try {
//算法
double height = Double.parseDouble(m_field_height.getText().toString())/100;
double weight = Double.parseDouble(m_field_weight.getText().toString());
double BMI = weight / (height * height);
//结果输出
m_view_result.setText(getText(R.string.bmi_result) + nf.format(BMI));
//建议输出
if (BMI > 25) {
m_view_suggest.setText(R.string.advice_heavy);
}
else if (BMI < 20) {
m_view_suggest.setText(R.string.advice_light);
}
else {
m_view_suggest.setText(R.string.advice_average);
}
}
catch (Exception err) {
Toast.makeText(Bmi.this, R.string.input_error, Toast.LENGTH_SHORT).show();
}
Log.v(TAG, "setListensers : onClick(calc button) exit");
}
});
Log.v(TAG, "setListensers exit");
}
/*
* 函数介绍:弹出式对话框函数
* 返回了this,所以可以链式
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
private void openOptionsDialog() {
Log.v(TAG, "openOptionsDialog enter");
new AlertDialog.Builder(Bmi.this)
.setTitle(R.string.about_title)
.setMessage(R.string.about_message)
.setPositiveButton(R.string.ok_label, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.v(TAG, "openOptionsDialog : onClick(positive button) enter");
Log.v(TAG, "openOptionsDialog : onClick(positive button) exit");
}
})
.setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.v(TAG, "openOptionsDialog : onClick(negative button) enter");
//浏览网页
Uri uri = Uri.parse(getString(R.string.homepage_uri));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
Log.v(TAG, "openOptionsDialog : onClick(positive button) exit");
}
})
.show();
Log.v(TAG, "openOptionsDialog exit");
}
/*
* 函数介绍:菜单创建函数
* 一般菜单创建了,就要显示,所以返回值常常是true
* 输入参数:无
* 输出参数:menu,增加自定义的菜单项
* 返回值 :true,菜单显示;false,菜单不显示
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.v(TAG, "onCreateOptionsMenu enter");
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, MENU_ABOUT, Menu.NONE, R.string.menu_about);
menu.add(Menu.NONE, MENU_QUIT, Menu.NONE, R.string.menu_exit);
Log.v(TAG, "onCreateOptionsMenu exit");
return true;
}
/*
* 函数介绍:菜单响应函数
* 一般菜单创建了,就要显示,所以返回值常常是true
* 输入参数:menu,菜单项
* 输出参数:无
* 返回值 :true,菜单处理了;false,菜单下级可再处理
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.v(TAG, "onOptionsItemSelected enter");
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case MENU_ABOUT:
Log.v(TAG, "onOptionsItemSelected : MENU_ABOUT enter");
openOptionsDialog();
Log.v(TAG, "onOptionsItemSelected : MENU_ABOUT exit");
break;
case MENU_QUIT:
Log.v(TAG, "onOptionsItemSelected : MENU_QUIT enter");
finish();
Log.v(TAG, "onOptionsItemSelected : MENU_QUIT exit");
break;
}
Log.v(TAG, "onOptionsItemSelected enter");
return true;
}
/*
* 函数介绍:开始
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
@Override
public void onStart() {
Log.v(TAG, "onStart enter");
super.onStart();
Log.v(TAG, "onStart exit");
}
/*
* 函数介绍:重入
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
@Override
public void onResume() {
Log.v(TAG, "onResume enter");
super.onResume();
Log.v(TAG, "onResume exit");
}
/*
* 函数介绍:暂停
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
@Override
public void onPause() {
Log.v(TAG, "onPause enter");
super.onPause();
Log.v(TAG, "onPause exit");
}
/*
* 函数介绍:停止
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
@Override
public void onStop() {
Log.v(TAG, "onStop enter");
super.onStop();
savePrefs();
Log.v(TAG, "onStop exit");
}
/*
* 函数介绍:重开始
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
@Override
public void onRestart() {
Log.v(TAG, "onRestart enter");
super.onRestart();
Log.v(TAG, "onRestart exit");
}
/*
* 函数介绍:摧毁
* 输入参数:无
* 输出参数:无
* 返回值 :无
*/
@Override
public void onDestroy() {
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android_BMI.7z (57个子文件)
BMIEx
.project 841B
default.properties 362B
bin
com
demo
android
bmi
R$string.class 990B
R$layout.class 430B
Bmi$1.class 2KB
R$drawable.class 406B
Report.class 3KB
R.class 545B
Bmi$2.class 1015B
Bmi.class 6KB
R$attr.class 346B
Report$1.class 756B
R$id.class 546B
Bmi$3.class 1KB
BMIEx.apk 19KB
resources.ap_ 12KB
classes.dex 11KB
proguard.cfg 1KB
AndroidManifest.xml 720B
src
com
demo
android
bmi
Bmi.java 8KB
Report.java 3KB
res
values
advice.xml 225B
strings.xml 775B
report.xml 158B
layout
report.xml 621B
main.xml 1KB
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable-mdpi
icon.png 3KB
.classpath 280B
gen
com
demo
android
bmi
R.java 2KB
assets
BMI
.project 839B
default.properties 362B
bin
com
demo
android
bmi
R$string.class 919B
R$layout.class 400B
Bmi$1.class 2KB
R$drawable.class 406B
R.class 545B
Bmi$2.class 1015B
Bmi.class 6KB
R$attr.class 346B
R$id.class 511B
Bmi$3.class 1KB
BMI.apk 18KB
resources.ap_ 11KB
classes.dex 10KB
proguard.cfg 1KB
AndroidManifest.xml 673B
src
com
demo
android
bmi
Bmi.java 9KB
res
values
advice.xml 225B
strings.xml 775B
layout
main.xml 1KB
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable-mdpi
icon.png 3KB
.classpath 280B
gen
com
demo
android
bmi
R.java 2KB
assets
共 57 条
- 1
资源评论
- 青城老虎头2014-10-28确实有参考作用,还行
- h9356613562013-01-09怎么试是手机版的 啊啊 啊
中才德创
- 粉丝: 31
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功