• 【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); } } }; }
  • 相关阅读:
    iOS NSPredicate和正则表达式
    Linux下网络socket编程——实现服务器(select)与多个客户端通信
    多线程有什么用?
    一句话说明白什么是面向对象
    (转)简单的Malloc实现
    动态内存管理:malloc/free/new/delete/brk/mmap
    Qt绘制中国象棋棋盘
    (转)Qt中文手册 之 QApplication
    Qt常用类——QFrame类与QWidge类
    Qt常用类——QWidget
  • 原文地址:https://www.cnblogs.com/Rain2017/p/10791815.html
Copyright © 2020-2023  润新知