【Android入门】基础篇:一个App学会安卓开发
一、程序项目架构
二、编写“BMI身高体重指数计算器”应用程序
1、设计用户界面
打开 “res/layout/activity_main.xml” 页面布局文件进行编辑
android:id="@+id/height" “@”符号是提示XML解析器应该把后面的字符串解析成标识符号,“+”符号代表将添加一个标识符号。“id/”表示这个标识符号会被归类在“id”下面,“height”是这个界面组件的“android:id”。以后的程序中,会使用“R.id.height”来取得这个界面组件。
因此“@+id/height”的意思是我们在此创建了名为“height”的标识符,可以通过这个标识符来控制所对应的界面组件。
以下XML布局文件已经将字符串进行抽离
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/height" /> <!--android:numeric="integer"限制用户在文本框只能输入整数--> <!--android:text=""指定“EditText”默认显示的文字--> <EditText android:id="@+id/height" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:text=""/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/weight" /> <!--新版本“android:inputType”代替一堆输入属性--> <!--“numberDecimal”表示文本框可以输入包含小数点的数字--> <EditText android:id="@+id/weight" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="numberDecimal" android:text=""/> <Button android:id="@+id/submit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/bmi_btn"/> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /> <TextView android:id="@+id/suggest" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /> </LinearLayout>
将字符串抽离XML
我们将XML布局文件中的文字描述部分抽离出来,使界面更容易维护
编辑 “res/values/string.xml” 文件,表示字符串的格式为 <string name="标识代号">文字叙述</string>。然后,我们把这些字符串应用到之前定义好的XML布局文件中。通过使用 @string/[标识符号]
string.xml
<resources> <string name="app_name">BMI</string> <string name="height">身高(cm)</string> <string name="weight">体重(kg)</string> <string name="bmi_btn">计算 BMI 值</string> <string name="bmi_result">你的 BMI 值是</string> </resources>
新增XML文件
在 “res/values” 目录中新建一个 “advice.xml” 文件,文件里面将包含 “BMI程序” 算出 “BMI值” 后将给予的建议文字。完整的文件如下:
advice.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="advice_light">你该多吃点</string> <string name="advice_average">体型很棒哦</string> <string name="advice_heavy">你该节食了</string> </resources>
2、程序逻辑结构
MainActivity.java
package com.example.myapp;
import android.app.Activity;
import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.text.DecimalFormat; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //添加按钮及响应 Button button = (Button)findViewById(R.id.submit); button.setOnClickListener(calcBMI); } private View.OnClickListener calcBMI = new View.OnClickListener() { @Override 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("YourBMIis "+nf.format(BMI)); //显示建议 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); } } }; }