Android自定义控件系列(五)—万能的对话框

转载请注明出处:http://www.jianshu.com/p/f9c79334bc06

自定义控件有段时间没更新了,今天给大家带来一个新的对话框样式,本着用更少的代码实现更丰富的功能。

由于对话框对用户的操作有影响,所以目前app上的对话框用的已经比较少了,但还是有一些比较重要的信息提示需要使用对话框的样式,例如版本更新,账户异地登陆等。

下面来看自定义对话框的样式:

图1:自定义提示对话框
图2:自定义警告对话框
图3:默认提示对话框
图4:默认警告对话框

这里面带来了两种对话框的样式,也是比较常见的。以上所有的背景颜色,文字颜色,以及按钮的点击效果都是可以自定义的。

下面分别看看四种对话框是如何实现的
图1:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
        .setTitle("发现新版本V5.4.1")
        .setContent("Version5.4.1\n【更新默认表情】——同步最新表情,聊天更有趣\n" +
                "【资料卡大升级】——全新视觉设计,增加陌生人来源信息\n" +
                "【消息跳动优化】——鼠标悬浮在消息列表上时顺序不动,再也不怕点错啦\n" +
                "【收藏预览升级】——完善图片浏览体验,优化网页预览效果\n" +
                "【更多体验优化】——群成员列表宽度可调;优化天气定位策略;优化图片查看器")
        .setStyle(DialogM.STYLE_TIP)
        .setPositiveButton("更新", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogMActivity.this, "submit", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        })
        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogMActivity.this, "cancel", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
builder.create().show();

图2:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
        .setTitle("Hello")
        .setTitleBackColor(getResources().getColor(R.color.content))
        .setTitleTextColor(getResources().getColor(R.color.mainColor))
        .setAlertButtonBackColor(getResources().getColor(R.color.mainColor))
        .setAlertButtonTextColor(getResources().getColor(android.R.color.white))
        .setCanceledOnTouchOutside(false)
        .setAlertButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        })
        .setContent("landptf");
builder.create().show();

图3:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
        .setContent("landptf")
        .setStyle(DialogM.STYLE_TIP)
        .setPositiveButton("submit", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogMActivity.this, "submit", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        })
        .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(DialogMActivity.this, "cancel", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
builder.create().show();

图4:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
        .setAlertButton("", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        })
        .setContent("landptf");
builder.create().show();

图3与图4完全使用了默认的颜色,我在代码里指定了红色为主色调

所有的操作都是通过链式调用,可以根据自己app的风格随意改变颜色。当然了你也可以把代码下载下来增加更丰富的功能。

源码比较长,有兴趣的童鞋可以点击这里查看。
源码中采用了建造者模式,可以方便链式调用,使代码看起来更简洁。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,840评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,124评论 4 61
  • 参考资料 AdonisJS 官方文档 前言 本篇文章仅对 AdonisJS 框架作简要介绍及简单语法提及,详细语法...
    唐紫依阅读 10,806评论 8 9
  • 言辞人,类似于我们的公共知识分子,他们是群众运动的舆论制造者,在群中运动还没有展开时,他们就开始从舆论上动摇现有体...
    苏菲小姐的咖啡时光阅读 436评论 0 0
  • 就是今天,2016年9月15日,我送出了学生时代最后一个月饼。。。 未来的中秋节,相信我要在实习单位度过,能面对面...
    Cheese还是cheers阅读 276评论 0 0

友情链接更多精彩内容