最近有空,来把app中常用到的Dialog对话框写一篇博客,在app中很多地方都会用到Dialog对话框,今天小编我就给大家介绍Dialog对话框。

先看看效果图:

12种,可根据需求选择,上图可知,底部弹框也可通过Dialog对话框实现,可以不用PopupWindow来实现了,比较方便

Android Support Library v22.1 中开始提供了 Material 风格的 Dialog 控件 ,看起来也是很好看的

Material 风格的 Dialog类:android.support.v7.app.AlertDialog

这个 V7 包中的 AlertDialog 在 Android 2.1 以上可以提供兼容性的 Material 风格 Dialog

举例说明一下:

public static AlertDialog.Builder getMessageDialog(Context context, String message, DialogInterface.OnClickListener onClickListener) {
AlertDialog.Builder builder = getDialog(context);
builder.setTitle("我是标题");
builder.setMessage(message);/*消息内容*/
builder.setIcon(R.mipmap.ic_launcher);/*logo图标*/
builder.setPositiveButton("确定", onClickListener);/*确定事件监听*/
   builder.setNegativeButton("取消", null);/*取消事件(可以监听或不监听(关闭窗口))*/
return builder;
}

使用调用

 DialogHelper.getMessageDialog(this, "我是信息", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"基本对话框,并监听确定按钮",Toast.LENGTH_LONG).show();
}
}).show();

效果如图:

进度条对话框

 /***
* 获取一个进度对话框(耗时操作使用)
*
* @param context
* @param message 加载提示信息
* @return
*/
public static ProgressDialog getWaitDialog(Context context, String message) {
ProgressDialog waitDialog = new ProgressDialog(context);
if (!TextUtils.isEmpty(message)) {
waitDialog.setMessage(message);
}
return waitDialog;
}

只含信息和监听确定和取消按钮,选择对话框

      

单选对话框  和自定义对话框(有时候自带的各种方法并不能满足我们的Dialog的设计需求,这时候我们可以自己写一个 xml 设计符合需求的Dialog。(仅为设计Dialog的Message部分,并不是Dialog整体))

     

  /***
*单选对话框
* @param context
* @param title 标题
* @param arrays 数组信息
* @param selectIndex 默认选中
* @param onClickListener 单选按钮选择事件
* @param onOkClickListener 确定按钮事件
* @return
*/
public static AlertDialog.Builder getSingleChoiceDialog(Context context, String title, String[] arrays, int selectIndex, DialogInterface.OnClickListener onClickListener, DialogInterface.OnClickListener onOkClickListener) {
AlertDialog.Builder builder = getDialog(context);
builder.setSingleChoiceItems(arrays, selectIndex, onClickListener);
if (!TextUtils.isEmpty(title)) {
builder.setTitle(title);
}
builder.setPositiveButton("确定", onOkClickListener);
builder.setNegativeButton("取消", null);//null===关闭对话框
return builder;
}
            /***
* 自定义对话框
*/
LayoutInflater inflater = getLayoutInflater();
View dialog = inflater.inflate(R.layout.dialog_normal_layout,(ViewGroup) findViewById(R.id.dialog));
final EditText editText = (EditText) dialog.findViewById(R.id.et);
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setTitle("这里是Title");
builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, editText.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
}
});
builder1.setView(dialog);
builder1.setIcon(R.mipmap.ic_launcher);
builder1.show();

app经常需要的如下弹窗,四周是圆角,IOS几乎都是这个效果,底部对话框也是(照片选择或者分享),

  

以上两种方式需要自定义Dialog类来实现此功能,使用  android.app.Dialog 类即可  创建类继承Dialog来实现。

由于代码太多,就不一一贴出来了,直接下载即可,不要积分哦!  源码点击下载

不足之处请留言指正!有问题的可以给我留言!谢谢!

Android之UI--打造12种Dialog对话框的更多相关文章

  1. Android软件开发之盘点全部Dialog对话框大合集(一)

    对话框大合集 今天我用自己写的一个Demo和大家具体介绍一个Android中的对话框的使用技巧. 1.确定取消对话框 个button   通过调用setPositiveButton方法和 setNeg ...

  2. Android学习(十九)Dialog对话框

    一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗 ...

  3. Android中九种dialog对话框代码

    public class MainActivity extends Activity { private static final int MAX_PROGRESS = 100; private st ...

  4. Android开发必知--几种不同对话框的实现

    在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的.在看具体实例之前先对AlertDialog做一个简单介绍.AlertDialog是功能最 ...

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

    Dialog是android开发过程中最常用到的组件之一,Dialog的创立办法有两种: 一是直接new一个Dialog目标,然后调用Dialog目标的show和dismiss办法来操控对话框的显现和 ...

  6. Android更新UI的几种方法

    在Android开发过程中,常需要更新界面的UI.比如网络请求操作.一些耗时操作都不能放在UI线程中运行的,需要放在子线程,而子线程又不能更新UI界面,这是我们需要引入一个Handler,消息处理机制 ...

  7. Android 更新UI的几种方式

    1.Activity的 runOnUiThread textView = (TextView) findViewById( R.id.tv ); new Thread(new Runnable() { ...

  8. 转:探讨android更新UI的几种方法

    本文转自:http://www.cnblogs.com/wenjiang/p/3180324.html 作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了,因 ...

  9. Android更新UI的两种方法——handler与runOnUiThread()

    在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面 显示常会报错.抛出异常:android.view.ViewRoo ...

随机推荐

  1. Java网络通信基础编程

    一.同步阻塞方式(BIO) 方式一: 服务器端(Server): package com.ietree.basicskill.socket.mode1; import java.io.IOExcept ...

  2. Linux系统常用命令示例

    1.在跟下创建一个目录,目录的名字为data # mkdir /data2.在data目录里创建一个文件,文件名为yunjisuan.txt # touch /data/yunjisuan.txt3. ...

  3. SqoopFlume、Flume、HDFS之间比较

    Sqoop Flume HDFS Sqoop用于从结构化数据源,例如,RDBMS导入数据 Flume 用于移动批量流数据到HDFS HDFS使用 Hadoop 生态系统存储数据的分布式文件系统 Sqo ...

  4. mysql中explain的用法

    mysql中explain的用法 最近在做性能测试中经常遇到一些数据库的问题,通常使用慢查询日志可以找到执行效果比较差的sql,但是仅仅找到这些sql是不行的,我们需要协助开发人员分析问题所在,这就经 ...

  5. BZOJ 1316: 树上的询问

    挺裸的点分治 刚开始想用map水过去,然后做p次点分治,然后T到自闭 最后发现可以sort一遍,然后去重,记录每个数出现的次数,这样就可以双指针,不会漏掉了 #include <bits/std ...

  6. [转]手把手教你搭建Hive Web环境

    了解Hive的都知道Hive有三种使用方式——CLI命令行,HWI(hie web interface)浏览器 以及 Thrift客户端连接方式. 为了体验下HWI模式,特意查询了多方的资料,都没有一 ...

  7. CSS 分组和嵌套选择器

    CSS 分组和嵌套选择器 一.分组选择器 在样式表中有很多具有相同样式的元素. h1 { color:green; } h2 { color:green; } p { color:green; } 为 ...

  8. [专业亲测]Ubuntu16.04安装Nvidia显卡驱动(cuda)--解决你的所有困惑【转】

    本文转载自: 因为要做毕设需要安装caffe2,配置cuda8.0,但是安装nvidia驱动真的是把我难倒了,看了很多篇博文都没有效果,现在我自己重新总结了下几种 安装方法(亲测有效),希望能帮到大家 ...

  9. 无线网卡在 MAC 系统下的安装与使用过程

    MAC系统安装netgear无线网卡的方法: 1)去网件官网下载相应的驱动软件 2)单击页面左侧的“Version 1.0.0.0”进入下载页面如下图 3)选择对应您系统版本的驱动程序,按右键保存到计 ...

  10. nginx配置Strict Transport Security

    一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://zt.test.com或者直接zt.test.com.这样存在中 ...