Android自定义控件实现万能的对话框
程序员文章站
2023-11-12 21:47:16
自定义控件有段时间没更新了,今天给大家带来一个新的对话框样式,本着用更少的代码实现更丰富的功能。
由于对话框对用户的操作有影响,所以目前app上的对话框用的已经比较少了,...
自定义控件有段时间没更新了,今天给大家带来一个新的对话框样式,本着用更少的代码实现更丰富的功能。
由于对话框对用户的操作有影响,所以目前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的风格随意改变颜色。当然了你也可以把代码下载下来增加更丰富的功能。
源码比较长,有兴趣的童鞋可以点击查看。
源码中采用了建造者模式,可以方便链式调用,使代码看起来更简洁。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。