安卓下Builder模式解析+自定义Dialog实战演练

本文详细讲解了Builder模式的原理和在Android中创建自定义Dialog的应用。通过Builder模式,可以方便地构建和定制Dialog。文章还介绍了如何避免自定义Dialog时遇到的小坑,并提供了GitHub代码链接供读者参考学习。
摘要由CSDN通过智能技术生成

**本文将从一下几个方面展开:
1Bulider模式的原理和使用
2系统Dailog的调用
3自定义Dailog
4自定义Dailog的一些小坑**

本文Github代码链接
https://github.com/AndroidMsky/AirDialog

自定义Dailog效果:
这里写图片描述

1.Bulider模式的原理和使用

当你看到这样的一串代码是不是觉得很炫酷?

  airDialog = new AirDialog.Builder(this).
                    setLeftText("gogo").
                    setRightText("nono").
                    create();

通过几个点点,像一个链子一样配置组装一个对象。今天就教给大家自己也可以设计这样一条链子。相比构造方法,这种模式更加灵活,更加清晰。

先看看设计图:
这里写图片描述

别怕相信大多数人都看不懂。不过对设计模式了解比较多的人呢还是可以看懂的,今天就咱不谈这个类图(你看懂不如会用)。
为什么可以里连续…….的调用方法,其实就是每次调用方法后return一个对象就好喽。当前的表达式值就一直是这个对象所以可以无限的….下去。

public Builder setLeftText(String left) {
            this.left=left;
            return this;
        }

代码很清晰没个设置方法都是这样的,方法的返回类型就是当前的Builder。那么我们就可以继续的调用Builder类中的方法喽。

2.系统Dailog的调用

 new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")//设置对话框标题  

     .setMessage("!")//设置显示的内容  

     .setPositiveButton("确定",new DialogInterface.OnClickListener() {
  //添加确定按钮  
@Override  

         public void onClick(DialogInterface dialog, int which) {
         }  

     }).setNegativeButton("返回",new DialogInterface.OnClickListener() {
  //添加返回按钮  
@Override  
public void onClick(DialogInterface dialog, int which) { 
 }  
 }).show();//在按键响应事件中显示此对话框 

系统提供了很多的Dialog的子类本文不去详细介绍,接下来就说如何自己写一个类似Dialog的子类。

3.自定义Dailog

1继承Dialog并且实现构造方法:

public class AirDialog extends Dialog {
   

public AirDialog(Context context) {
        super(context, R.style.custom_dialog);
    }

super方法的第二个参数是为Dialog指定一个主题,那就在Styles。xml中加入如下代码:

<style name="custom_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item> <!-- 边框 -->
<item name="android:windowIsFloating">true</item> <!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">true</item> <!-- 半透明 -->
<item name="android:windowNoTitle">true</item> <!-- 无标题 -->
<item name="android:windowBackground">@android:color/transparent</item>
</style>

常用的几个标签的意思已经注释。可以通过配置跟多的标签来扩展dialog的样式。
这样就可以去调用一个dialog了,但是不行,我们要加入Builder模式,于是参考安卓源码后新建内部静态类

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值