通过实例学安卓开发
序
今天将学习单选控件、复选控件、消息提醒对话框控件、进度控件的使用。
实例
题目
Android对话框控件与进度控件的使用。
程序结果展示界面
涉及到的知识点
RadioGroup单选控件
RadioGroup包含若干单选按钮控件RadioButton,通过这两个控件,可以为用户提供一种“多选一”的选择方式。
CheckBox复选控件
通过使用父类CompoundButton提供的方法isChecked()来判断用户是否勾选该复选框。
消息提醒对话框控件AlertDialog与进度控件ProgressDialog
对话框控件AlertDialog位于android.app包内。
实现过程
- 新建一个名为Dialog的Android应用工程
- 修改布局文件activity_main.xml
- 编写程序MainActivity.java
源码
activity_main.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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:onClick="click1"
android:id="@+id/btn1" android:text="显示一个提醒对话框"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50sp"
android:textSize="25sp"
/>
<Button
android:onClick="click2"
android:id="@+id/btn2" android:text="显示一个是否型对话框"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="25sp"/>
<Button
android:onClick="click3"
android:id="@+id/btn3" android:text="显示一个单选对话框"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="25sp"/>
<Button
android:onClick="click4"
android:id="@+id/btn4" android:text="显示一个多选对话框"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="25sp"/>
<Button
android:onClick="click5"
android:id="@+id/btn5" android:text="进度对话框"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="25sp"/>
<Button
android:onClick="click6"
android:id="@+id/btn6" android:text="进度条对话框"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="25sp"/>
</LinearLayout>
MainActivity.java
package com.example.dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private Button btn1,btn2,btn3,btn4,btn6,btn5;
//声明一个监听器,并在重写的监听器的onClick()方法中,需要判断按钮对象
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (view==btn1){
click1();
}else if (view==btn2){
click2();
}else if (view==btn3){
click3();
}else if (view==btn4){
click4();
}else if (view==btn5){
click5();
}else if (view==btn6){
click6();
}
}
};
private void click1() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.btn1);
builder.setTitle("消息提醒");
builder.setMessage("你单击了提醒对话框按钮!");
builder.setPositiveButton("确定",null);
builder.show();
}
private void click2() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher_foreground);
builder.setTitle("对话框标题");
builder.setMessage("是否升级应用程序");
builder.setPositiveButton("确定",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface view,int a) {
Toast.makeText(MainActivity.this,"确定按钮被点击了",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface view,int a) {
Toast.makeText(MainActivity.this,"取消按钮被点击了",Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
private void click3() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("单选对话框");
final String[] items = new String[]{"条目1","条目2","条目3"};
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,items[i]+"(序号为"+i+")被点击了",Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定",null);
builder.show();
}
private void click4() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("多选对话框");
final String[] items = new String[]{"条目1","条目2","条目3","条目4"};
builder.setMultiChoiceItems(items, new boolean[]{true, false, true, false}, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
Toast.makeText(MainActivity.this,items[i] + b,Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定",null);
builder.show();
}
private void click5() {
ProgressDialog pd = new ProgressDialog(this);
pd.setTitle("文件加载");
pd.setMessage("正在加载中……");
pd.setCanceledOnTouchOutside(true);
pd.show();
}
private void click6() {
final ProgressDialog pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setTitle("文件上传");
pd.setMax(100);
pd.setCanceledOnTouchOutside(false);
pd.show();
new Thread(){
@Override
public void run(){
for (int i = 0; i < 100; i++) {
pd.setProgress(i);
try {
Thread.sleep(50);
}catch (InterruptedException e){
e.printStackTrace();
}
}
pd.dismiss();
}
}.start();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到所有按钮组件对象
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
btn4 = (Button) findViewById(R.id.btn4);
btn5 = (Button) findViewById(R.id.btn5);
btn6 = (Button) findViewById(R.id.btn6);
//给所有的按钮组件添加监听器
btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);
btn3.setOnClickListener(listener);
btn4.setOnClickListener(listener);
btn5.setOnClickListener(listener);
btn6.setOnClickListener(listener);
}
}