Android开发(19)---常见dialog对话框的运用

news/2025/6/14 14:13:47

Dialog是android开发过程中最常用到的组件之一,Dialog的创立办法有两种:
一是直接new一个Dialog目标,然后调用Dialog目标的show和dismiss办法来操控对话框的显现和躲藏。
二是在Activity的onCreateDialog(int id)办法中创立Dialog目标并回来,然后调用Activty的showDialog(int id)和dismissDialog(int id)来显现和躲藏对话框。

差异在于经过第二种办法创立的对话框会承继Activity的特点,比方取得Activity的menu事情等。下面案例主要介绍第一种。

1.最简单的对话框

布局文件:

就一个Button按钮

 

<Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="79dp"android:onClick="openDialog"android:text="打开对话框" />

MainActivity.java

 

 

 

 

package com.example.lesson16_dialog;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;public class MainActivity extends Activity {private Handler handler;private int progress;private static final int MAX_PROGRESS=100;private static final int PRO=10;private ProgressDialog progressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@SuppressWarnings("deprecation")public void openDialog(View v) {test1();/*tes2();tes3();tes4();tes5();tes6();test7();myDialog();*/}public void test1() {// 创建对话框对象AlertDialog alertDialog = new AlertDialog.Builder(this).create();// 设置对话框的标题alertDialog.setTitle("这是一个消息对话框");// 设置对话框中的内容alertDialog.setMessage("消息");// 显示对话框alertDialog.show();}public void tes2() {AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle("哈哈").setMessage("什么都没有").show();}public void tes3() {new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher).setTitle("对话框").setMessage("是否创建文件").setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 创建文件了new AlertDialog.Builder(MainActivity.this).setMessage("文件已经被创建").show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {new AlertDialog.Builder(MainActivity.this).setMessage("您已经选择了取消的按钮,该文件不会被创建").create().show();}}).show();}public void tes4() {final String items[] = { "Java", "PHP", "3G", ".NET" };new AlertDialog.Builder(this).setTitle("简单列表对话框").setItems(items, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 第一个参数 dialog int which 那个条目Toast.makeText(getApplicationContext(),"xxxxx" + items[which], Toast.LENGTH_LONG).show();}}).show();}public void tes5() {final String items[] = { "Java", "PHP", "3G", ".NET" };new AlertDialog.Builder(this).setTitle("单选列表对话框")// .setSingleChoiceItems(items, checkedItem, listener)// .setSingleChoiceItems(itemsId, checkedItem, listener)// .setSingleChoiceItems(adapter, checkedItem, listener)// .setSingleChoiceItems(cursor, checkedItem, labelColumn, listener)// labelColumn如果数据源是数据集// 数据集中的某一列会作为列表对话框的数据加载的列表框中,该参数表示该列的名称(字段名称).setSingleChoiceItems(items, 1,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {// 第一个参数 dialog int which 那个条目Toast.makeText(getApplicationContext(),"xxxxx" + items[which],Toast.LENGTH_LONG).show();}}).show();}public void tes6() {final String items[] = { "Java", "PHP", "3G", ".NET" };new AlertDialog.Builder(this).setTitle("多选列表对话框")// .setMultiChoiceItems(itemsId, checkedItems, listener)// .setMultiChoiceItems(cursor, isCheckedColumn, labelColumn,// listener).setMultiChoiceItems(items,new boolean[] { false, true, true, false },new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which, boolean isChecked) {if (isChecked) {Toast.makeText(getApplicationContext(),"xxx" + items[which],Toast.LENGTH_LONG).show();}}}).setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(getApplicationContext(), "确认",Toast.LENGTH_LONG).show();}}).show();}
	//系统进度条public void test7(){handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case PRO:if (progress >= MAX_PROGRESS) {// 重新设置progress = 0;progressDialog.dismiss();// 销毁对话框} else {progress++;progressDialog.incrementProgressBy(1);// 延迟发送消息handler.sendEmptyMessageDelayed(PRO, 100);}break;default:break;}}};progressDialog = new ProgressDialog(this);progressDialog.setIcon(R.drawable.ic_launcher);progressDialog.setTitle("正在加载数据......");progressDialog.setMessage("请稍后...");// 设置进度条对话框  旋转STYLE_SPINNER,水平 STYLE_HORIZONTALprogressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 样式(水平,旋体)// 进度最大值progressDialog.setMax(MAX_PROGRESS);progressDialog.setButton("暂停", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//删除消息队列handler.removeMessages(PRO);}});progressDialog.setButton2("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//删除消息队列handler.removeMessages(PRO);//恢复进度初始值progress=0;progressDialog.setProgress(progress);}});// 显示progressDialog.show();//必须设置到show之后  show之前 可能bugprogress = (progress>0)?progress:0;progressDialog.setProgress(progress);// 线程handler.sendEmptyMessage(PRO);}
	//自定义的对话框public void myDialog(){LayoutInflater  layoutInflater = getLayoutInflater();View view = layoutInflater.inflate(R.layout.activity_main, null); //R.layout.activty_main自定义的布局文件new AlertDialog.Builder(this).setView(view).setTitle("自定义的对话框").setPositiveButton("确认按钮", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//处理}}).show();}}

 

 




 

 

转载于:https://www.cnblogs.com/jiangu66/p/3155495.html

文章来源:https://blog.csdn.net/weixin_30951231/article/details/98737115
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-696665.html

相关文章

C# Task

Task是一种基于任务的编程模型。它与thread的主要区别是&#xff0c;它更加方便对线程进程调度和获取线程的执行结果。 Task类和thread类&#xff0c;前者接收的是Action委托类型&#xff0c;后者接收的是Func委托类型。 Task创建&#xff1a; &#xff08;1&#xff09;直接创…

fastjson 的使用总结

前言 最近在开发过程中使用了大量的json作为前后端数据交换的方式,由于之前没有对json做过系统的学习,所有在使用过程中查阅了大量的文档与资料,这里主要记录了我在开发后对json以及fastjson使用的总结 JSON 介绍 JSON(javaScript Object Notation)是一种轻量级的数据交换格式。…

Java本地时间与GMT时间的转换

2019独角兽企业重金招聘Python工程师标准>>> 1.把本地时间转换成GMT时间 Date dnew Date(); DateFormat formatnew SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); format.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println(…

autorelease理解

问题&#xff1a;看到很多程序&#xff0c;都是开始时NSAutoreleasePool *pool [...];.....[pool release];中间甚至没有出现过[对象 autorelease],那么这些对象是怎么加入到pool中的了&#xff1f; 解答&#xff1a;自动释放池为自动释放对象提供了容身之处。 凡是不是通过a…

maven中各种jar

1 maven 加入json-lib.jar 报错 原因&#xff1a;json-lib是需要区分jdk版本的&#xff0c;pom.xml中的配置应加上标签classifier指定jdk版本&#xff0c;如用jdk15<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactI…

15分钟在笔记本上搭建 Kubernetes + Istio开发环境

11月13~15日&#xff0c;KubeCon 上海大会召开&#xff0c;云原生是这个秋天最火热的技术。很多同学来问如何上手 Kubernetes和Istio 服务网格开发。本文将帮助你利用Docker CE桌面版&#xff0c;15分钟在笔记本上从零搭建 Kubernetes Istio开发环境&#xff0c;开启云原生之旅…

在Linux下访问Windows共享文件夹

在Linux下访问Windows共享文件夹 说明以下操作以Ubuntu为例&#xff0c;大家可以参考。我在Ubuntu 14.04和16.04都试过了。Windows共享文件夹 如果局域网内有一台Windows主机&#xff0c;将指定文件夹设为共享&#xff0c;就可以在局域网内访问了。如果要从Linux下访问该如何操…

android 升级ADT到22后,出现bug: Could not find class,或者Caused by: java.lang.ClassNotFoundException:异常...

作者&#xff1a;舍得333 主页&#xff1a;http://blog.sina.com.cn/u/1509658847版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章原始出版、作者信息和本声明&#xff0c;否则将追究法律责任。把ADT升级到22后&#xff0c;编译…

OCR文字识别rec数据合成制作

在做文字识别的时候&#xff0c;往往由于自己的rec训练数据过少&#xff0c;需要自己生成一些数据来加入训练。这里我使用 TextRecognitionDataGenerator 来生成自己所需的数据。 1.使用方法&#xff1a; 下载代码仓库&#xff1a; git clone https://github.com/Belval/Tex…

如何禁止listview的item项获得焦点,而让item的子控件获得焦点

http://www.cnblogs.com/yexiubiao/archive/2013/02/24/2924324.html转载于:https://www.cnblogs.com/ct732003684/p/3156549.html