Android之简单的BMI计算器(运用两个界面跳转显示)

BMI计算器

这个运用到了Activity之间的跳转,每个app通常由多个界面组成,每个界面就是一个activity,界面跳转就是activity之间的跳转。
activity之间的跳转用 Intent(意图) 组件
Intent是意图组件,是程序各组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传输。
Intent被分为显式意图和隐式意图

显式意图

显式意图可以直接通过名称开启指定的目标组件,通过其构造方法
Intent(ContextpackageContext,Class<?>cls)来实现,其中第一个参数为当前activity对象,使用this即可,第二个参数表示启动的目标activity。
通过这个方法创建一个activity对象,然后将该对象传递给activity的startActivity(Intent,intent)方法即可启动目标组件。
示例代码如下:

Intent intent = new Intent(this,Activity2.class);   //创建Intent对象
startActivity(intent);  //开启Activity2

隐式意图

隐式意图相对显示意图来说更为抽象,它并没有明确指示要开启哪个目标组件,而是通过指定的action和category等属性信息,系统根据这些信息进行分析,然后寻找目标Activity。

示例代码如下

Intent intnet = new Intent();
//设置activity动作,该动作要和清单文件中的设置一样
intent.setAction("cn.itcast.START_ACTIVITY");
startActivity(intent);  

上述代码中,没指定category,这是因为在目标Activity的清单文件中配置的category是一个默认值,在调用startActivity()方法时,自动将这个category添加到Intent中。
需要在目标清单文件中配置,指定当前Activity能够响应的action和category

示例代码如下

activity android:name="cn,itcast.Activity2"
	<intent-filter>
	<!--设置action属性,需要在代码中根据所设置的name打开指定组件-->
	<action android:name="cn.itcast.START_ACTIVITY"/>
	<category android:name="android.intent.category.DEFAULT"/>
	</intent-filter>
</activity>

注意:每个Intent只能指定一个action,但能指定多个category

接下来就是用intent做的BMI计算器

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="5"
    android:orientation="vertical" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#03A9F4"
        android:text="   身高(米):" />

    <EditText
        android:id="@+id/height"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入身高:" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#03A9F4"
        android:text="   体重(公斤):" />

    <EditText
        android:id="@+id/weight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入体重:" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="24sp"
        android:textColor="#03A9F4"
        android:layout_margin="30dp"
        android:text="计算体质指数" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="24sp"
        android:textColor="#03A9F4"
        android:text="         清   除        " />
</LinearLayout>

界面1结果展示
界面1

MainActivity.java

package com.example.bmi;  //项目包名,一般不用赋值,建项目自动生成的
 
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {
    Button button1, button2;
    EditText heightText, weightText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button1 = findViewById(R.id.button1);
        button2 = findViewById(R.id.button2);
        heightText = findViewById(R.id.height);
        weightText = findViewById(R.id.weight);

        //j计算按钮事件
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    clickbutton();
            }
        });
        //清除按钮事件
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                weightText.setText("");
                heightText.setText("");
            }
        });
    }
    //计算按钮事件
    public void clickbutton() {
        String h=heightText.getText().toString();
        String w=weightText.getText().toString();
        //判断输入内容是否为空
        if(h==null||w==null){
            Toast.makeText(MainActivity.this,"提醒:输入为空", Toast.LENGTH_SHORT).show();
            return;
        }
        //初始化身高体重
        double dh=1,dw=1,BMI;
        try {
            //把tv字符串转化为double并赋值
            dh=Double.parseDouble(h);
            dw=Double.parseDouble(w);
        } catch (Exception e) {
            Toast.makeText(MainActivity.this,"提醒:输入非法",Toast.LENGTH_SHORT).show();
            return;
        }
        BMI = dw / (dh * dh);
        //保留两位小数
        DecimalFormat nf = new DecimalFormat("0.00");
        String BMIText1=nf.format(BMI);
        //传递参数到第二个页面
        Intent intent=new Intent(MainActivity.this,Main2Activity.class);
        //intent.setClass(this,Main2Activity.class);
        intent.putExtra("BMI", BMIText1);
        startActivity(intent);


    }
}

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="5"
    tools:context="com.example.bmi.Main2Activity" >

    <ImageView
        android:id="@+id/tp"
        android:layout_weight="2"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:src="@drawable/tu1"
        />
    <TextView
        android:id="@+id/bmi"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#E25A8B"
        android:layout_margin="10dp"
        android:text="BMI:" />
    <TextView
        android:id="@+id/Text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#03A9F4" />
    <TextView
        android:id="@+id/jy"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#EE66A2"
        android:layout_margin="5dp"
        android:text="身体状态:" />
    <TextView
        android:id="@+id/Text4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#03A9F4" />
</LinearLayout>

解释部分代码:
android:src="@drawable/tu1" //在图像视图组件添加图片

界面2结果展示
界面2

Main2Activity.java

package com.example.bmi;  //项目包名

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class Main2Activity extends AppCompatActivity {
    String zt,sjy;
    String sbmi;
    double dbmi=1;
    TextView BMIText, classificationText,bmi,jy;
    ImageView tp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        bmi=(TextView) findViewById(R.id.bmi);
        jy=(TextView) findViewById(R.id.jy);
        tp=(ImageView) findViewById(R.id.tp);
        BMIText = findViewById(R.id.Text2);
        classificationText = findViewById(R.id.Text4);
        //创建显示意图
        Intent intent=getIntent();
        sbmi=intent.getStringExtra("BMI");
        dbmi=Double.valueOf(sbmi);
        BMIText.setText("您的BMI:"+dbmi);
        //判断
        tp.setImageResource(R.drawable.tu1);
        if(dbmi<=18.4){
            classificationText.setText("偏瘦,建议多吃点东西");
        }
        else if(dbmi<=23.9){
            classificationText.setText("正常,继续保持");
        }
        else if(dbmi<=27.9){
            classificationText.setText("过重,建议少吃点东西,多锻炼身体");
        }
        else {
            classificationText.setText("肥胖,建议少吃多运动");
        }

    }
}

Run结果展示:
结果1
结果2
加油!

发布了5 篇原创文章 · 获赞 6 · 访问量 447

猜你喜欢

转载自blog.csdn.net/qq_45844792/article/details/105033615