android背景高斯模糊的Dialog

弹窗大致效果:
这里写图片描述

调用方法,和普通AlertDialog没什么区别

 BlurDialog dialog = new BlurDialog.Builder(MainActivity.this)
                        .setTitle("哈哈哈")
                        .setMessage("你大爷的啊啊啊?")
                        .setNegativeButton("确定", null)
                        .setPositiveButton("取消", null)
                        .create();
                dialog.show();

直接下载aar包,放在libs下引用
aar包地址

一定要在build.gradle里面添加支持

renderscriptTargetApi 19
renderscriptSupportModeEnabled true

在这个地方,例如:

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    renderscriptTargetApi 19
    renderscriptSupportModeEnabled true
}

当然你还得依赖aar文件

compile(name:'blur', ext:'aar')

直接使用aar包的话,界面就已经定制好了,就是这种白色圆角半透明的Dialog风格,带边框阴影。

如果需要定制Dialog样式的话,再做一点工作。源码也很简单,把源码和资源文件复制出去成一个依赖工程,或者直接拼在项目中,修改布局文件就好了。源码结构如下:

这里写图片描述
(BuildConfig是一个无用的类,导出aar自动生成的)

例如BlurBitmap类我也是从别人那里复制出来做一点修改的。我觉得BlurBitmap之前做的模糊效果实在太模糊了,添加了模糊度修改。

可以在dialog的后面造成模糊效果,模糊的实现是基于FastBlur算法实现的。项目地址:https://github.com/tvbarthel/BlurDialogFragment 效果图:使用说明:最简单的使用方式是继承BlurDialogFragment或者SupportBlurDialogFragment。如果你用的是android.app.DialogFragment,那么继承BlurDialogFragment/**  * Simple fragment with blurring effect behind.  */ public class SampleDialogFragment extends BlurDialogFragment {       @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         this.debug(true);         this.setBlurRadius(4);         this.setDownScaleFactor(5.0f);           ...     }       ... }如果是android.support.v4.app.DialogFragment 则继承 SupportBlurDialogFragment/**  * Simple fragment with blurring effect behind.  */ public class SampleDialogFragment extends SupportBlurDialogFragment {       @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         this.debug(true);         this.setBlurRadius(4);         this.setDownScaleFactor(5.0f);           ...     }       ... }如果你不想使用继承的方式可以直接使用BlurEngine自定义一个DialogFragment/**  * Your blur fragment directly using BlurEngine.  */ public class SampleDialogFragment extends MyCustomDialogFragment {        /**      * Engine used to blur.      */     private BlurDialogEngine mBlurEngine;       @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);           mBlurEngine = new BlurDialogEngine(getActivity());         mBlurEngine.debug(mDebugEnable);         mBlurEngine.setBlurRadius(8);         mBlurEngine.setDownScaleFactor(8f);     }       @Override     public void onResume() {         super.onResume();         mBlurEngine.onResume(getRetainInstance());     }        @Override     public void onDismiss(DialogInterface dialog) {         super.onDismiss(dialog);         mBlurEngine.onDismiss();     }       @Override     public void onDestroy() {         super.onDestroy();         mBlurEngine.onDestroy();     }       @Override     public void onDestroyView() {         if (getDialog() != null) {             getDialog().setDismissMessage(null);         }         super.onDestroyView();     }       ... }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值