您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
77_常见的对话框
发布时间:2021-03-18 21:27:24编辑:雪饮阅读()
这次来实现下安卓中各种对话框。由于对权限没有什么要求,所以这里清单文件就没有多加赘述。主要也就是布局与功能实现。那么这里主要实现八个示例,所以布局文件我们就用八个按钮吧。
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确定取消对话框" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="pick对话框" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="一定要有选择的单选对话框" />
<Button
android:id="@+id/button31"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="一定要有选择的单选对话框(可销毁,即选即毁)" />
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="多选对话框" />
<Button
android:id="@+id/button41"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="多选对话框(带确定按钮)" />
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="处理中对话框(loading,当前进度不可见)" />
<Button
android:id="@+id/button51"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="处理中对话框(loading,当前进度可见)" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确定取消对话框" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="pick对话框" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="一定要有选择的单选对话框" />
<Button
android:id="@+id/button31"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="一定要有选择的单选对话框(可销毁,即选即毁)" />
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="多选对话框" />
<Button
android:id="@+id/button41"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="多选对话框(带确定按钮)" />
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="处理中对话框(loading,当前进度不可见)" />
<Button
android:id="@+id/button51"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="处理中对话框(loading,当前进度可见)" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
那么接下来就是这8个按钮对应的事件实现
MainActivity.java:
package com.example.dialogfactory;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button bt1,bt2,bt3,bt31,bt4,bt41,bt5,bt51;
AlertDialog dialog31 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) this.findViewById(R.id.button1);
bt1.setOnClickListener(this);
bt2 = (Button) this.findViewById(R.id.button2);
bt2.setOnClickListener(this);
bt3 = (Button) this.findViewById(R.id.button3);
bt3.setOnClickListener(this);
bt31 = (Button) this.findViewById(R.id.button31);
bt31.setOnClickListener(this);
bt4 = (Button) this.findViewById(R.id.button4);
bt4.setOnClickListener(this);
bt41 = (Button) this.findViewById(R.id.button41);
bt41.setOnClickListener(this);
bt5 = (Button) this.findViewById(R.id.button5);
bt5.setOnClickListener(this);
bt51 = (Button) this.findViewById(R.id.button51);
bt51.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
// 确定取消的对话框
case R.id.button1:
//1.获取一个对话框的创建器
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//2.所有builder设置一些参数
builder.setTitle("对话框标题");
builder.setMessage("提示 是否退出呀?");
//确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "确定被点击", Toast.LENGTH_SHORT).show();
}});
//取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "取消被点击", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
break;
//pick的对话框(有点像下拉单选)
case R.id.button2:
//1.获取一个对话框的创建器
AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
builder2.setTitle("pick 一个人");
final String [] arr = new String[]{"张三","李四","王五"};
builder2.setItems(arr, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), arr[which], Toast.LENGTH_SHORT).show();
}
});
builder2.create().show();
break;
//带选择 单选对话框
case R.id.button3:
//1.获取一个对话框的创建器
AlertDialog.Builder builder3 = new AlertDialog.Builder(MainActivity.this);
builder3.setTitle("选择一个颜色");
final String [] items = new String[]{"红色","蓝色","黄色"};
//checkedItem 默认勾选选项
builder3.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), items[which], Toast.LENGTH_SHORT).show();
}});
builder3.create().show();
break;
//带选择 单选对话框(可销毁,选择后即销毁)
case R.id.button31:
//1.获取一个对话框的创建器
AlertDialog.Builder builder31 = new AlertDialog.Builder(MainActivity.this);
builder31.setTitle("选择一个颜色");
final String [] items31 = new String[]{"红色","蓝色","黄色"};
builder31.setSingleChoiceItems(items31, 1, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), items31[which], Toast.LENGTH_SHORT).show();
//需要一个AlertDialog的实例来调用dismiss,但是又是在内部类中调用,所以如果在onClick方法中就需要final声明
//但是AlertDialog的实例在这里不适合用final,因为AlertDialog的实例在下面的步骤中需要通过如builder31.create()给覆盖掉
//所以只能定义在在上一个层面即这里的MainActivity类的成员变量中
dialog31.dismiss();
}});
dialog31=builder31.create();
dialog31.show();
break;
//多选对话框
case R.id.button4:
//1.获取一个对话框的创建器
AlertDialog.Builder builder4 = new AlertDialog.Builder(MainActivity.this);
builder4.setTitle("选择若干个颜色");
final String [] items4 = new String[]{"红色","蓝色","黄色"};
//参数2表示默认情况下多选状态的选项勾选情况
builder4.setMultiChoiceItems(items4, new boolean[]{false,true,false}, new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialog, int which,boolean isChecked) {
Toast.makeText(getApplicationContext(), items4[which] + " 选择状态"+ isChecked, Toast.LENGTH_SHORT).show();
}}
);
builder4.create().show();
break;
//多选对话框(带确定按钮)
case R.id.button41:
//1.获取一个对话框的创建器
AlertDialog.Builder builder41 = new AlertDialog.Builder(MainActivity.this);
builder41.setTitle("选择若干个颜色");
final String [] items41 = new String[]{"红色","蓝色","黄色"};
//参数2表示默认情况下多选状态的选项勾选情况
builder41.setMultiChoiceItems(items41, new boolean[]{false,true,false}, new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialog, int which,boolean isChecked) {
Toast.makeText(getApplicationContext(), items41[which] + " 选择状态"+ isChecked, Toast.LENGTH_SHORT).show();
}}
);
//确定按钮
builder41.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {}
});
builder41.create().show();
break;
//处理中对话框(loading,当前进度不可见)
case R.id.button5 :
ProgressDialog pd = new ProgressDialog(this);
pd.setTitle("提示");
pd.setMessage("正在获取数据");
pd.show();
break;
//处理中对话框(loading,当前进度可见)
case R.id.button51 :
ProgressDialog pd51 = new ProgressDialog(this);
pd51.setTitle("提示");
pd51.setMessage("正在获取数据");
pd51.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置数据最大值(进度条最大值)
pd51.setMax(100);
pd51.show();
//设置当前已加载数据值(当前进度条已加载),必须要在show之后再执行,否则这里无论赋值多少,都是显示已加载为0
pd51.setProgress(50);
break;
}
}
}
最后这里部署到设备中以最后一个按钮的事件交互效果如:
这次内容比较简单,看看代码里面有的注释,都能了然于心了。
关键字词:android,对话框
下一篇:78_常用的ui