一个封装好的dialog工具类,减少重复的代码,简洁又方便使用!

前言:

在很久很久以前,我就写过一篇文章介绍自定义dialog的“自定义Dialog提示框高仿QQ浏览器版本更新提示框”,哎,简直是弱爆了,如果按照那种方式去写代码,估计很难维护,代码也不直观,所以我就将自定义的dialog封装起来了,将一些重复用到的代码封装成方法直接调用,那是多么爽快的事情啊。


demo




使用方法:

Step 1

Gradle

dependencies {
    	compile 'com.superluo:dialog:1.0.1'
}

Maven

<dependency>
  <groupId>com.superluo</groupId>
  <artifactId>dialog</artifactId>
  <version>1.0.1</version>
  <type>pom</type>
</dependency>

Step 2

xml中创建自己想要实现的dialog布局,喜欢就好,哈哈。

Step 3

接下来就可以通过简洁的代码调用封装好dialog工具类,实现你想要的效果了。

(1)简单调用:

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .build()
                .show();

(2)使用addViewOnclick(viewId, listener)方法添加view的点击监听:

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .build()
                .show();

(3)使用cancelTouchout(boolean)方法设置是否点击dialog背景取消dialog (默认为true):

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .build()
                .show();

(4)使用setDialogAnim(R.style.xxx)方法设置dialog进出动画:

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .setDialogAnim(R.style.xxx)
                .build()
                .show();

(5)使用setDialogPosition(position)方法设置dialog在屏幕的显示位置 (默认为屏幕中间):

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .setDialogAnim(R.style.xxx)
                .setDialogPosition(xxx)
                .build()
                .show();

(6)设置dialog宽高,默认宽为屏幕的0.7,高为包裹内容。下面提供了几种设置宽高的方法(调用方法如上):

setHeightPX(int val)//用px设置dialog高度
setWidthPX(int val)//用px设置dialog宽度

setHeightDP(int val)//用dp设置dialog高度
setWidthDP(int val)//用dp设置dialog宽度

setHeightDimenRes(int dimenRes)//用dimen设置dialog高度
setWidthDimenRes(int dimenRes)//用dimen设置dialog宽度

(7)使用cancel()方法取消dialog显示:

CustomDialog dialog = new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .setDialogAnim(R.style.xxx)
                .setDialogPosition(xxx)
                .build();
                
        //dialog显示
        dialog.show();
        、、、
        //取消dialog显示
        dialog.cancel();

(8)最后还可以使用获取控件实例的方法,以便在代码里设置控件的文本属性;

dialog = new CustomDialog.Builder(this)
              .view(R.layout.dialog_custom_view1)
              .addViewOnclick(R.id.tv_cancel,listener)
              .addViewOnclick(R.id.tv_update,listener)
              .build();
      //代码设置view属性
      TextView tv_title = dialog.findView(R.id.tv_title);
      TextView tips = dialog.findView(R.id.tv_tips);
      TextView tv_update = dialog.findView(R.id.tv_update);
      tv_title.setText("辞职信");
      tips.setText("由于程序猿这行业是高危行业,所以我决定明天就向老板申请离职,毕竟世界那么大,我还想活着去看看");
      tv_update.setText("立即辞职");

      dialog.show();

demo下载地址:GitHub




猜你喜欢

转载自blog.csdn.net/qq_29269233/article/details/78965935