Android菜鸟上手 之 BMI

这篇博客记录了作者作为Android菜鸟的学习经历,分享了一段用于计算BMI(身体质量指数)的简单代码,旨在帮助读者理解Android开发基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上个学期在深圳实习接触了一些Android的东西,于是开始自学,一边翻书一边写的实例,菜鸟上手测量身高体重比的naive代码,祝大家身体健康,保持好身材微笑

MainActivity.java

package com.example.bmi;


import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
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.Toast;

public class MainActivity extends Activity {
	protected static final int MENU_ABOUT = Menu.FIRST;//菜单项
	protected static final int MENU_QUIT = Menu.FIRST+1;//菜单项
	
    public static final String PREF = "BMI_PREF";
    public static final String PREF_HEIGHT = "BMI_Height";    
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViews();//绑定
        restorePrefs();//偏好设置
        
        setListeners();//设置监听
        if (Debug.On) Log.d(this.toString(),"Activity on listen!");
    }
    
	private void restorePrefs(){
		SharedPreferences settings = getSharedPreferences(PREF,0);
		String pref_height = settings.getString(PREF_HEIGHT, "");
		if(!"".equals(pref_height)){
			field_height.setText(pref_height);
			field_weight.requestFocus();//默认光标移动
		}		
	}
	
	
    @Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		//保存优先级
		SharedPreferences settings = getSharedPreferences(PREF,0);
		settings.edit()//开始修改
				.putString(PREF_HEIGHT,field_height.getText().toString())//添加高度仅PREF_HEIGHT字段中去
				.commit();//修改完成
	}

	//菜单
	//创建菜单
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu
        .add(0, MENU_ABOUT, 0, R.string.bmi_abbtn)
        .setIcon(android.R.drawable.ic_menu_help)
        .setAlphabeticShortcut('a');//添加快捷键
        
        menu.add(0, MENU_QUIT, 0, R.string.bmi_quitbtn)
        .setIcon(android.R.drawable.ic_menu_close_clear_cancel)
        .setAlphabeticShortcut('d');
        
        //getMenuInflater().inflate(R.menu.activity_main, menu);
        //上句添加settings的操作
        return true;
    }
    
    //选择菜单时的操作
    @Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
    	switch(item.getItemId()){
    	case MENU_ABOUT:
    		plusFunction();
    		break;//注意break
    	case MENU_QUIT:
    		finish();
    		break;
    	}
		return super.onOptionsItemSelected(item);
	}
    //菜单
    	
    	
    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);	
    }
    
    private void setListeners(){
    	button_calc.setOnClickListener(calcBMI);
    }

    
    private Button.OnClickListener calcBMI = new Button.OnClickListener(){
    	public void onClick(View v){
    		//切换到报告页面
    		Intent intent = new Intent();
    		//设置意图来源的Activity所在的class,与要前往的Activity所在的class
    		intent.setClass(MainActivity.this, SubActivity.class);
    		//新建一个bundle携带所需要的数据
    		Bundle bundle = new Bundle();
    		bundle.putString("KEY_HEIGHT", field_height.getText().toString());
    		bundle.putString("KEY_WEIGHT", field_weight.getText().toString());
    		//将bundle放入intent中
    		intent.putExtras(bundle);
    		startActivity(intent);
    	}//onClick function
    	
    };//Button.OnclickListener class
    
    private void plusFunction(){
    	new AlertDialog.Builder(MainActivity.this)//参数是一个content 位置
    	.setTitle(R.string.about_title)
    	.setMessage(R.string.about_msg)
    	.setPositiveButton(R.string.ok_label, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				//点击此确认时的动作
				Toast.makeText(MainActivity.this, R.string.toast, Toast.LENGTH_SHORT).show();
			}
		})
		.setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				//点击首页时的操作
				Uri uri =Uri.parse("http://www.renren.com/bonzi");
				Intent intent = new Intent(Intent.ACTION_VIEW, uri);
				startActivity(intent);  //启动一个新的Activity,使用对应的程序查看内容
			}
		})
		.setNeutralButton(R.string.location_label, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				//点击首页时的操作
				Uri uri =Uri.parse("geo: 34.230004, 108.917499");
				final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
				startActivity(intent);  //启动一个新的Activity,使用对应的程序查看内容
			}
		})
		.show();
    }



}

SubActivity.java

package com.example.bmi;

import java.text.DecimalFormat;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
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.TextView;
import android.widget.Toast;

public class SubActivity extends Activity {
	protected static final int MENU_ABOUT = Menu.FIRST;//菜单项
	protected static final int MENU_QUIT = Menu.FIRST+1;//菜单项
	
	private Button button_back;
    private TextView view_result;
    private TextView view_suggest;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        findViews();//绑定
        showResults();
        setListeners();//设置监听
        if (Debug.On) Log.d(this.toString(),"Activity on listen!");        
    }
	
	private void showResults(){
		DecimalFormat nf= new DecimalFormat("0.0");
		
		//取出bundle信息
		Bundle bundle = this.getIntent().getExtras();
		double height = Double.parseDouble(bundle.getString("KEY_HEIGHT"))/100;
		double weight = Double.parseDouble(bundle.getString("KEY_WEIGHT"));
		double BMI = weight / (height * height);
		
		//展示结果
		view_result.setText(getText(R.string.bmi_result) + nf.format(BMI));
		
		//给予建议
		if(BMI > 25){
			view_suggest.setText(R.string.advice_heavy);
			showNotification(BMI);
		}else if (BMI < 20) {
			view_suggest.setText(R.string.advice_light);
		}else {
			view_suggest.setText(R.string.advice_average);
		}
	}
	
	protected void showNotification(double BMI){
    	NotificationManager barManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    	
    	// 设置Notification中的图片文字和事件
    	Notification barMsg = new Notification(
    			android.R.drawable.stat_sys_warning,
    			"过重啦亲!",
    			System.currentTimeMillis()
    			);
    	
    	
    	//即将到来的Intent,在用户点选状态栏中该笔信息时,去执行一个Activity
    	PendingIntent contentIntent = PendingIntent.getActivity(
    			this, 
    			0, 
    			new Intent(this, MainActivity.class), 
    			PendingIntent.FLAG_UPDATE_CURRENT);
    	
    	//设置下来状态中的文字等
    	barMsg.setLatestEventInfo(
    			SubActivity.this,
    			"您的BMI值过高", 
    			"通知监督人", 
    			contentIntent);
    	
    	//barMangager发出通知
    	barManager.notify(0, barMsg);
    	
    }

	private void findViews(){
    	button_back = (Button) findViewById(R.id.back);
    	view_result = (TextView) findViewById(R.id.result);
    	view_suggest = (TextView) findViewById(R.id.suggest);    	
    }

	private void setListeners(){
    	button_back.setOnClickListener(backToPreviousPage);
    }
	
	 private Button.OnClickListener backToPreviousPage = new Button.OnClickListener(){
	    	public void onClick(View v){
	    		SubActivity.this.finish();
	    	}//onClick function
	    	
	    };//Button.OnclickListener class
	    
	@Override    
	public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu
        .add(0, MENU_ABOUT, 0, R.string.bmi_abbtn)
        .setIcon(android.R.drawable.ic_menu_help)
        .setAlphabeticShortcut('a');//添加快捷键
        
        menu.add(0, MENU_QUIT, 0, R.string.bmi_quitbtn)
        .setIcon(android.R.drawable.ic_menu_close_clear_cancel)
        .setAlphabeticShortcut('d');
        
        //getMenuInflater().inflate(R.menu.activity_main, menu);
        //上句添加settings的操作
        return true;
    }

	 @Override
	public boolean onOptionsItemSelected(MenuItem item) {
			// TODO Auto-generated method stub
	    	switch(item.getItemId()){
	    	case MENU_ABOUT:
	    		plusFunction();
	    		break;//注意break
	    	case MENU_QUIT:
	    		finish();
	    		break;
	    	}
			return super.onOptionsItemSelected(item);
		}
	 
	private void plusFunction(){
    	new AlertDialog.Builder(SubActivity.this)//参数是一个content 位置
    	.setTitle(R.string.about_title)
    	.setMessage(R.string.about_msg)
    	.setPositiveButton(R.string.ok_label, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				//点击此确认时的动作
				Toast.makeText(SubActivity.this, R.string.toast, Toast.LENGTH_SHORT).show();
			}
		})
		.setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				//点击首页时的操作
				Uri uri =Uri.parse("http://www.renren.com/bonzi");
				Intent intent = new Intent(Intent.ACTION_VIEW, uri);
				startActivity(intent);  //启动一个新的Activity,使用对应的程序查看内容
			}
		})
		.setNeutralButton(R.string.location_label, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				//点击首页时的操作
				Uri uri =Uri.parse("geo: 34.230004, 108.917499");
				final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
				startActivity(intent);  //启动一个新的Activity,使用对应的程序查看内容
			}
		})
		.show();
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值