android高斯模糊xml,realTimeBlurView2 一个实时高斯模糊方案,支持任意图形(只要你能画出来)任意覆盖色...

realTimeBlurView2

一个实时高斯模糊方案,支持任意图形,(只要你能画出来)任意覆盖色。

github上也有高斯模糊的方案,但不是实时的,原理上是截取背景图的一个cacheView,然后对这个cacheView进行高斯模糊,再设置成view的背景。所以一旦更改了需要高斯模糊的图,高斯模糊的效果却还是上一张的,该方案也可以达到实时效果,但是性能GG,要对view不断取cacheView,再创建新的bitmap,危险系数高,而我这个是实时更新的,利用canvas的层级这一原理,不用过多的进行bitmap操作

性能上个人觉得还可以吧,如果你觉得卡,可以设置一下RealtimeBlurView_realtimeDownsampleFactor 默认是4 ,值大的话卡顿效果会好一点 原理就是在创建bitmap时候并不是创建实际大小的,而是会先缩放,再高斯模糊,再放大,这样性能会更好

625332134c6f4d4600884b99daebf603.png

支持高斯模糊覆盖色 RealtimeBlurView_realtimeOverlayColor 圆角模式 圆形模式 任意模式

Jcenter

Add it in your root build.gradle at the end of repositories:

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. Add the dependency

dependencies {

implementation 'com.github.nbwzlyd:realTimeBlurView2:v0.1'

}

Maven

jitpack.io

https://jitpack.io

Step 2. Add the dependency

com.github.nbwzlyd

realTimeBlurView2

v0.1

使用方法很简单,在你需要高斯模糊的图上,像布局一样写就行了

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

android:id="@+id/RecyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

android:layout_marginTop="10dp"

android:id="@+id/RealtimeBlurView"

android:layout_width="300dp"

android:layout_height="150dp"

android:layout_centerHorizontal="true"/>

android:id="@+id/RoundCornerBlurView"

android:layout_width="match_parent"

android:layout_marginRight="10dp"

android:layout_marginLeft="10dp"

android:layout_height="150dp"

android:layout_below="@id/RealtimeBlurView"

android:layout_centerHorizontal="true"

android:layout_marginTop="40dp"

app:realtimeBlurRoundCornerRadius="6dp"

app:realtimeOverlayColor="#5a4B0082"/>

如果你觉得这样性能不好,你可以单独设置要高斯模糊的图片,利用bindView(View targetView)方法,(记得屏蔽onAttachedToWindow)

public RealtimeBlurView bindView(View targetView) {

mTargetView = targetView;

post(new Runnable() {

@Override

public void run() {

mTargetView.getViewTreeObserver().addOnPreDrawListener(mBlurPreDrawListener);

}

});

return this;

}

用FastBlur实现,兼容性上没问题,性能上,看你的设置了 realtimeBlurRadius 和realtimeDownsampleFactor

其中realtimeBlurRadius不要超过25。 我自己测试,模糊也就几毫秒的时间,很不错了。 鄙人不太喜欢写库也没能力写很牛逼的库,代码写的都很简单。人人都能看懂 我也是参考的github上大神的代码,做了适度精简,替换了renderscript方案,采用fastBlur,兼容性好,逻辑更清晰,但是健壮性就差很多了,拿来自己用,bug也好修复。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值