上个学期在深圳实习接触了一些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();
}
}