AlertDialog的种类和使用方法
2016-07-28 13:28
387 查看
<本文章仅作学习的笔记的目的,可能会有参考冲突与错误,请见谅。>
AlertDialog可以在当前页面里弹出一个对话框,它可以屏蔽其他UI控件的交互能力,以起到警示的作用,所以在实际设计时dialog会作为重要信息提示作用而存在。
dialog有以下几种形式:简单对话框,列表对话框,单选对话框,多选对话框,自定义对话框等。
1.简单对话框
步骤具体为:a:创建 AlertDialog.Builder实例
b:设置实例的一些属性
c:设置positive与negetive的监听
d:show(),显示
当显示对话框后整个界面会被屏蔽,UI控件将无法使用。
2.列表对话框
实现步骤:1.final一个数组作为列表项
2.获取实例(同简单对话框),配置标题,图标等
3.配置ITEM,传入数组,设置监听器,在监听器里设置事件
4.显示对话框
3.单选对话框
实现步骤:1.为了记录用户选择,我们需要在最外层添加 private int selectedId=0;
2.获取实例(同简单对话框),配置标题,图标等
3.配置singlechoiceitems,传入数组,设置默认选择为数组第0项,设置监听器,在监听器里设置事件
4.我们用int变量记录下最终的选择,传递给确定按钮
5.显示对话框
4.多选对话框
实现步骤:1.为了记录用户选择,我们需要在代码开始添加 ArrayList chooselist=new ArrayList()用来储存用户选项;
2.获取实例(同简单对话框),配置标题,图标等
3.配置setMultiChoiceItems,传入数组,设置默认选择为全部false,设置监听器,在监听器里设置事件,监听器里的ischecked用来做判断
如果选中,则在数组里动态添加,如果没选中,则移除。
4.使用tostring方法提示选择。
5.显示对话框
5.自定义对话框
实现步骤:1.首先在点击弹出dialog的button的xml属性上添加
android:onClick=”bteClick”属性
2.为onclick属性添加逻辑
设置反射器,创建反射器视图,创建对话框实例然后设置视图,为视图上的按钮添加响应(这里不用使用button获取实例,而是直接把视图当作按钮看待,设置dismiss方法使对话框消失)
3.最后将对话框显示出来
自定义对话框xml布局
上面是模仿网易云音乐的音乐闹钟界面,我们可以添加获取时间的方法来做成闹钟的应用。
以上为基本对话框,另外还有时间,日期选择功能的对话框和进度对话框,下面是用线程来模拟登录的例子,其中用到了对话框
分析:1.UI主线程正在运行,输入帐号密码后,通过gettext获取输入内容,用equal方法判断,并提供未输入或者输入错误的提示
2.当输入正确后,启动dialog进度框,并同时启动子线程,此时两个线程分别走不同的线路,子线程所执行的操作就是sleep()延时效果,
通过for循环延时4s,最后由handler发出命令,回传给handler里的方法,执行方法达到进度框消失,新活动启动,旧活动销毁的效果
进度框会在4s后消失,并打开新的活动
AlertDialog可以在当前页面里弹出一个对话框,它可以屏蔽其他UI控件的交互能力,以起到警示的作用,所以在实际设计时dialog会作为重要信息提示作用而存在。
dialog有以下几种形式:简单对话框,列表对话框,单选对话框,多选对话框,自定义对话框等。
1.简单对话框
Button dig=(Button)findViewById(R.id.dig1); dig.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder dix=new AlertDialog.Builder(Activity14.this); //创建Alert builder对象 dix.setIcon(R.mipmap.ic_launcher); //设置图标 dix.setTitle("对话框"); //设置标题 dix.setMessage("这是一个对话框"); //设置内容 dix.setPositiveButton("进入界面", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //在此添加逻辑 } }); //确定方面事件响应 dix.setNegativeButton("残忍的离开", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); //取消方面事件响应 dix.show(); //显示出对话框 } }); }
步骤具体为:a:创建 AlertDialog.Builder实例
b:设置实例的一些属性
c:设置positive与negetive的监听
d:show(),显示
当显示对话框后整个界面会被屏蔽,UI控件将无法使用。
2.列表对话框
Button listdialog =(Button)findViewById(R.id.listdialog); listdialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] arr={"c语言","c++","java","python","HTML","c#"}; //常量定义数组 AlertDialog.Builder dix=new AlertDialog.Builder(Activity14.this); //创建Alert builder对象 dix.setIcon(R.mipmap.ic_launcher); //设置图标 dix.setTitle("选择编程语言"); //设置标题 dix.setItems(arr, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Activity14.this,"选择了"+arr[which],Toast.LENGTH_SHORT).show(); } }); //传入arr,并且设置监听器 dix.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); //确定方面事件响应 dix.show(); } });
实现步骤:1.final一个数组作为列表项
2.获取实例(同简单对话框),配置标题,图标等
3.配置ITEM,传入数组,设置监听器,在监听器里设置事件
4.显示对话框
3.单选对话框
Button singlechoose=(Button)findViewById(R.id.singlechoose); singlechoose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] arr={"c语言","c++","java","python","HTML","c#"}; //常量定义数组 AlertDialog.Builder dix=new AlertDialog.Builder(Activity14.this); //创建Alert builder对象 dix.setIcon(R.mipmap.ic_launcher); //设置图标 dix.setTitle("选择编程语言"); //设置标题 dix.setSingleChoiceItems(arr, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { selectedId=which; Toast.makeText(Activity14.this,"选择了"+arr[which],Toast.LENGTH_SHORT).show(); } }); dix.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Activity14.this,"最终选择了"+arr[selectedId],Toast.LENGTH_SHORT).show(); } }); //确定方面事件响应 dix.show(); } });
实现步骤:1.为了记录用户选择,我们需要在最外层添加 private int selectedId=0;
2.获取实例(同简单对话框),配置标题,图标等
3.配置singlechoiceitems,传入数组,设置默认选择为数组第0项,设置监听器,在监听器里设置事件
4.我们用int变量记录下最终的选择,传递给确定按钮
5.显示对话框
4.多选对话框
Button chooses=(Button)findViewById(R.id.chooses); chooses.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] arr={"c语言","c++","java","python","HTML","c#"}; //常量定义数组 chooselist.clear(); fc96 AlertDialog.Builder dix=new AlertDialog.Builder(Activity14.this); //创建Alert builder对象 dix.setIcon(R.mipmap.ic_launcher); //设置图标 dix.setTitle("选择编程语言"); //设置标题 dix.setMultiChoiceItems(arr, new boolean[]{false, false, false,false, false, false}, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if(isChecked){ chooselist.add(which); } else{ chooselist.remove(which); } Toast.makeText(Activity14.this,"用户的选择"+chooselist.toString(),Toast.LENGTH_SHORT).show(); } }); //设置多选,传入数组,默认选择值,是否选中的逻辑 (如果选中,在数组里添加选项,如果没选中就移除选项) dix.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //最后的toast提示,使用了tostring方法。 Toast.makeText(Activity14.this,"最终选择了"+chooselist.toString(),Toast.LENGTH_SHORT).show(); } }); //确定方面事件响应 dix.show(); } });
实现步骤:1.为了记录用户选择,我们需要在代码开始添加 ArrayList chooselist=new ArrayList()用来储存用户选项;
2.获取实例(同简单对话框),配置标题,图标等
3.配置setMultiChoiceItems,传入数组,设置默认选择为全部false,设置监听器,在监听器里设置事件,监听器里的ischecked用来做判断
如果选中,则在数组里动态添加,如果没选中,则移除。
4.使用tostring方法提示选择。
5.显示对话框
5.自定义对话框
Java代码 public void bteClick(View v) { LayoutInflater layoutInflater=LayoutInflater.from(this); //设置反射器 View my=layoutInflater.inflate(R.layout.layout_myself_dialog,null); //创建反射器视图my,(采用了反射器的inflate方法) AlertDialog.Builder builder=new AlertDialog.Builder(this); //创建对话框实例 builder.setView(my); //设置好视图 my.findViewById(R.id.btx).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dia.dismiss(); } }); my.findViewById(R.id.btx2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dia.dismiss(); } }); //获取按钮对象,设置监听 dia=builder.create(); //显示出来 dia.show(); }
实现步骤:1.首先在点击弹出dialog的button的xml属性上添加
android:onClick=”bteClick”属性
2.为onclick属性添加逻辑
设置反射器,创建反射器视图,创建对话框实例然后设置视图,为视图上的按钮添加响应(这里不用使用button获取实例,而是直接把视图当作按钮看待,设置dismiss方法使对话框消失)
3.最后将对话框显示出来
自定义对话框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="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:background="#ffffff" android:gravity="center" android:orientation="horizontal" android:weightSum="1"> <TextView android:text="音乐闹钟" android:textSize="18sp" android:textColor="#000" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.95" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" android:padding="10dp" > </LinearLayout> <TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker" android:layerType="software" android:layout_gravity="center_horizontal" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffff" android:gravity="right" android:orientation="horizontal" android:weightSum="1"> <Button android:id="@+id/btx2" android:text=" 取消" android:textColor="#558544" android:textSize="15sp" android:background="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_weight="0.99" /> <Button android:id="@+id/btx" android:text="确定" android:textColor="#558544" android:textSize="15sp" android:background="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" /> </LinearLayout> </LinearLayout>
上面是模仿网易云音乐的音乐闹钟界面,我们可以添加获取时间的方法来做成闹钟的应用。
以上为基本对话框,另外还有时间,日期选择功能的对话框和进度对话框,下面是用线程来模拟登录的例子,其中用到了对话框
package com.example.a22345.life; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * Created by 22345 on 2016/7/25. */ public class Activity13 extends Activity { ProgressDialog pd; //进度框实例 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity13); //本篇为登录内容 final EditText editText=(EditText)findViewById(R.id.passwordx); final AutoCompleteTextView autoCompleteTextView=(AutoCompleteTextView)findViewById(R.id.emailx); Button button=(Button)findViewById(R.id.sign_in); //以上3步为获取xml布局上的实例 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String email=editText.getText().toString(); //获取输入的帐号内容,并转换为字符串 String pswd=autoCompleteTextView.getText().toString(); //获取输入的密码内容,并转换为字符串 if(email.equals("1")&&pswd.equals("1")) { //判读是否可以通过 Dialog(); //上面是显示dialog //两者同时运行,但是线程不一样 //下面是新建子线程 new Thread(){ public void run() { //人为制造的for循环耗时操作效果(Sleep) for (int i = 0; i < 4; i++) { try { Thread.sleep(1000); //强制停顿1s } catch (InterruptedException e) { e.printStackTrace(); } } handler.sendEmptyMessage(0); //子线程给主线程发送消息 } }.start(); //启动线程 } else if(email.equals("")&&email.equals("")) { Toast.makeText(Activity13.this,"宝宝没有发现你没有输入帐号或者密码!",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Activity13.this,"帐号或者密码错误啦!",Toast.LENGTH_SHORT).show(); } //否则就提出错误提醒 } }); //以上为设置button监听器 } Handler handler=new Handler() //存在于UI主线程里的handler { @Override public void handleMessage(Message msg){ pd.dismiss(); //控制主线程里的pd消失 Intent intent=new Intent(Activity13.this,Activity14.class); startActivity(intent); //新的活动被打开 finish(); //旧的活动结束 } }; public void Dialog() { pd=new ProgressDialog(this); pd.setIcon(R.mipmap.ic_launcher); //图标 pd.setTitle("正在登录"); //题目 pd.setMessage("请稍后……"); //内容 pd.setCancelable(true); //可取消 pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); //圆形 pd.show(); //显示 } } //设置dialog方法,用来显示对话框
分析:1.UI主线程正在运行,输入帐号密码后,通过gettext获取输入内容,用equal方法判断,并提供未输入或者输入错误的提示
2.当输入正确后,启动dialog进度框,并同时启动子线程,此时两个线程分别走不同的线路,子线程所执行的操作就是sleep()延时效果,
通过for循环延时4s,最后由handler发出命令,回传给handler里的方法,执行方法达到进度框消失,新活动启动,旧活动销毁的效果
进度框会在4s后消失,并打开新的活动
2016.7.25 19:38 Surine
相关文章推荐
- 一步一步跟我学易语言之第二个易程序菜单设计
- MooBox 基于Mootools的对话框插件
- flex 控件的重要属性
- 基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
- 学习Winform文本类控件(Label、Button、TextBox)
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- C#实现在前端网页弹出警告对话框(alert)的方法
- WinForm实现按名称递归查找控件的方法
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- C#中父窗口和子窗口之间控件互操作实例
- C#编写ActiveX网页截图控件
- C#中设计、使用Fluent API
- Android编程之Button控件用法实例分析
- Android开发必知 九种对话框的实现方法
- Android控件之CheckBox、RadioButton用法实例分析
- Android中创建对话框(确定取消对话框、单选对话框、多选对话框)实例代码
- 在Android开发中使用自定义组合控件的例子
- 一款超酷的Android自定义加载控件
- Android列表对话框用法实例分析