Android 应用程序开发实验(二)熟悉安卓常见的UI组件

(1)基本常用组件

        ①布局预览:

        ②代码设计:

2.1   MainActivity.java完整代码

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    RadioButton radioButton,radioButton2;
    Button button;
    EditText editTextText;


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


        radioButton = findViewById(R.id.radioButton);
        radioButton2 = findViewById(R.id.radioButton2);
        button = findViewById(R.id.button);
        editTextText = findViewById(R.id.editTextText);


        //点击计算按钮跳转页面MainActivity2
        Button button = findViewById(R.id.button);
        button.setOnClickListener(v -> calculateWeight());


        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

    private void calculateWeight() {
        String radioButtonValue = radioButton.getText().toString();
        int height = Integer.parseInt(editTextText.getText().toString());
        double weight;
        if (radioButton.isChecked()) {
            weight = (height - 80) * 0.7;
        } else {
            weight = (height - 80) * 0.6;
            radioButtonValue = "女";
        }
        Intent intent = new Intent(MainActivity.this, MainActivity2.class);
        //传递身高、体重数据到MainActivity2.class
        intent.putExtra("radioButtonValue",radioButtonValue);
        intent.putExtra("height", height);
        intent.putExtra("weight", weight);
        startActivity(intent);
    }
}

2.2   activity_main.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="160dp"
        android:layout_marginBottom="268dp"
        android:text="计算"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="260dp"
        android:layout_marginTop="220dp"
        android:text="女"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="34dp"
        android:layout_height="0dp"
        android:layout_marginStart="100dp"
        android:layout_marginTop="352dp"
        android:text="身高"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.479"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.95" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="156dp"
        android:layout_marginTop="132dp"
        android:text="计算你的标准体重!"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="100dp"
        android:layout_marginTop="232dp"
        android:text="性别"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editTextText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="340dp"
        android:layout_marginEnd="40dp"
        android:ems="10"
        android:inputType="text"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/textView3"
        app:layout_constraintTop_toTopOf="parent" />

    <RadioButton
        android:id="@+id/radioButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="168dp"
        android:layout_marginTop="220dp"
        android:text="男"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

2.3   MainActivity2.java完整代码

package com.example.myapplication;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity2 extends AppCompatActivity {

    TextView textView1;
    TextView textView2;
    TextView textView3;



    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main2);

        textView1 = findViewById(R.id.textView1);
        textView2 = findViewById(R.id.textView2);
        textView3 = findViewById(R.id.textView3);
        Intent intent = getIntent();

        String radioButtonValue = intent.getStringExtra("radioButtonValue");
        double weight = intent.getDoubleExtra("weight", 0.0);
        int height = intent.getIntExtra("height",0);
        textView1.setText("你是一位 : " + radioButtonValue + " 性");
        textView2.setText("你的身高是 : " + height + " cm");
        textView3.setText("你的标准体重是 : " + weight + " kg");

        //点击按钮跳转到ListView的使用页面
        Button button = findViewById(R.id.jump);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(MainActivity2.this, MainActivity3.class);
                startActivity(intent1);

            }
        });

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

}

2.4   activity_main2.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="124dp"
        android:layout_marginTop="112dp"
        android:text="你是一位: 性"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="124dp"
        android:layout_marginTop="172dp"
        android:text="你的身高是: 厘米"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="124dp"
        android:layout_marginTop="240dp"
        android:text="你的标准体重是: 公斤"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/jump"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="124dp"
        android:layout_marginTop="400dp"
        android:text="跳转到ListView页面"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

(2)ListView的使用

        ①布局预览:

        ②代码设计:

2.1   MainActivity3.java完整代码

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import java.util.ArrayList;
import java.util.List;

public class MainActivity3 extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main3);


        //点击按钮跳转到ListView的使用页面
        Button button = findViewById(R.id.jump2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(MainActivity3.this, MainActivity4.class);
                startActivity(intent1);

            }
        });

        final TextView textView = (TextView)findViewById(R.id.textView6);
        //ListView子项的信息
        ListView listView = (ListView)findViewById(R.id.Listview01);
        List<String>list = new ArrayList<String>();
        list.add("安卓应用开发基础-01");
        list.add("安卓应用开发基础-02");
        list.add("安卓应用开发基础-03");
        list.add("安卓应用开发基础-04");
        list.add("安卓应用开发基础-05");
        list.add("安卓应用开发基础-06");
        list.add("安卓应用开发基础-07");
        ArrayAdapter<String>adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
        listView.setAdapter(adapter);

        //ListView子项的点击监听器
        AdapterView.OnItemClickListener listViewListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                // String msg = "父 View: " + arg0.toString() + "\n"+"子 View: " +arg1.toString()+"\n"+"位置: "+String.valueOf(arg2)+",ID:"+String.valueOf(arg3);
                // 获取点击的子项对应的内容
                String msg = "您现在点击的是:"+ (String) arg0.getItemAtPosition(arg2);
                //Toast弹窗结果
                showToast("您点击了"+ (String) arg0.getItemAtPosition(arg2));
                //文本显示结果
                //textView.setText(msg);
            }
        };
        listView.setOnItemClickListener(listViewListener);

        //ListView子项长按监听器
        AdapterView.OnItemLongClickListener listViewLongClickListener = new AdapterView.OnItemLongClickListener(){
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                // 获取长按的子项对应的内容
                String msg = "您长按了:"+ (String) arg0.getItemAtPosition(arg2);
                // 弹出另一个气泡提示框
                showToast("您长按了"+ (String) arg0.getItemAtPosition(arg2));
                return true;
            }
        };
        listView.setOnItemLongClickListener(listViewLongClickListener);

        

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

    private void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
}

2.2   activity_main3.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity3">

    <Button
        android:id="@+id/jump2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="128dp"
        android:layout_marginTop="588dp"
        android:text="跳转到XML定义菜单"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="156dp"
        android:layout_marginTop="56dp"
        android:text="ListView的使用"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/Listview01"
        android:layout_width="409dp"
        android:layout_height="437dp"
        android:layout_marginTop="128dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </ListView>

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="96dp"
        android:layout_marginEnd="104dp"
        android:text="hello!"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

(3)XML定义菜单

        ①布局预览:

        ②代码设计:

2.1   MainActivity4.java完整代码

package com.example.myapplication;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity4 extends AppCompatActivity {

    Toast toast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);

        setContentView(R.layout.activity_main4);

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main,menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        TextView label = (TextView) findViewById(R.id.label);

        int itemId = item.getItemId();
        if (itemId == R.id.main_menu_01) {
            label.setTextSize(10);
            return true;
        } else if (itemId == R.id.main_menu_02) {
            label.setTextSize(16);
            return true;
        } else if (itemId == R.id.main_menu_03) {
            label.setTextSize(20);
            return true;
        } else if (itemId == R.id.main_menu_12) {
            label.setTextColor(Color.RED);
            return true;
        } else if (itemId == R.id.main_menu_11) {
            label.setTextColor(Color.BLACK);
            return true;
        } else if (itemId == R.id.main_menu_2) {
            showToast("您点击了基本菜单项");
            return true;
        }
        else {
            return false;
        }

    }
    private void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
}

2.2   activity_main4.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity4">

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="128dp"
        android:layout_marginTop="488dp"
        android:text="XML定义菜单哈哈哈哈哈"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

2.3   menu_main.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/main_menu_0"
        android:icon="@drawable/ic_launcher_background"
        android:title="字体大小">
        <menu>
            <item android:id="@+id/main_menu_01"
                android:title="小号:10"/>

            <item android:id="@+id/main_menu_02"
                android:title="中号:16"/>

            <item android:id="@+id/main_menu_03"
                android:title="大号:20"/>
        </menu>
    </item>
    <item android:id="@+id/main_menu_1"
        android:icon="@drawable/ic_launcher_background"
        android:title="字体颜色">
        <menu>
            <item android:id="@+id/main_menu_11"
                android:title="黑色"/>

            <item android:id="@+id/main_menu_12"
                android:title="红色"/>
        </menu>
    </item>

    <item android:id="@+id/main_menu_2"
        android:icon="@drawable/ic_launcher_background"
        android:title="普通菜单项"/>
    <item android:id="@+id/main_menu_3"
        android:icon="@drawable/ic_launcher_background"
        android:title="设置"/>
    <item android:id="@+id/main_menu_4"
        android:icon="@drawable/ic_launcher_background"
        android:title="订阅"/>


</menu>

(4)实验说明
           MainActivity2.java与MainActivity3.java中分别设置了跳转页面的代码,方便个人学习调试,不需要可选择删除跳转按钮以及相关代码。后续相关学习实验内容也会进行更新发布,感谢大家的喜欢与支持!作者学习Android 应用程序开发的过程中,如有不足之处,期待您的指正哦!

(5)寄语           

           学习之路漫漫长,薪资之望快快涨。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值