【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); } } }; }
原文地址:https://www.cnblogs.com/Rain2017/p/10791815.html