Android使用高斯模糊实现模糊背景
Android使用高斯模糊实现模糊背景
引言
最近的开发中实现了一个模糊背景的效果。大概效果是这样的:
实现思路
将View转成Bitmap,并且记录列表的滑动距离,生成bitmap时上移画布(这样是为了实现滑到那,模糊那的效果)
上移画布:一般绘制View,canvas的起始点在屏幕的左上角,也就是(0,0)。当canvas上移距离y后,绘制的起点会变成(0,-y)。这样canvas竖直方向-y到0这一部分会在屏幕外,那么在绘制的时候view的top到top+y是在屏幕外面,我们看不到;我们能看到的部分是从view的top+y开始的,这样就实现了模糊滑动后的列表了。
使用高斯模糊,对上一步生成的bitmap进行模糊处理
核心代码
高斯模糊
使用RenderScript,下列代码可以直接用。sdk>17可以正常使用。需要兼容sdk<17的话,要增加配置。文末会给参考文章
//使用RenderScript
private static Bitmap rsBlur(Context context, Bitmap source, float radius, float scale){int scaleWidth = (int) (source.getWidth() * scale);int scaleHeight = (int) (source.getHeight() * scale);Bitmap scaledBitmap = Bitmap.createScaledBitmap(source, scaleWidth,scaleHeight,false);Bitmap inputBitmap = scaledBitmap;Log.i("RenderScriptActivity","size:"+inputBitmap.getWidth()+","+inputBitmap.getHeight());//创建RenderScriptRenderScript renderScript = RenderScript.create(context);//创建AllocationAllocation input = Allocation.createFromBitmap(renderScript, inputBitmap, Allocation.MipmapControl.MIPMAP_NONE, USAGE_SCRIPT);Allocation output = Allocation.createTyped(renderScript, input.getType());//创建ScriptIntrinsicScriptIntrinsicBlur intrinsicBlur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));intrinsicBlur.setInput(input);intrinsicBlur.setRadius(radius);intrinsicBlur.forEach(output);output.copyTo(inputBitmap);renderScript.destroy();return inputBitmap;
}
View转Bitmap
代码很简单,需要注意的是将canvas上移scrollY。scrollY是gif中看到的列表相对起始位置滑动的距离。
还有生成的Bitmap要使用ARGB_8888格式,RGB_565效果不理想。
Bitmap bitmap = Bitmap.createBitmap(llListWidth, llListHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Log.e("ListViewBlurActivity","useCanvas,scrollY:"+scrollY);
canvas.translate(0,-scrollY);
llList.draw(canvas);
参考文章
Android 图片高斯模糊解决方案
关于高斯模糊,很全面的文章,会告诉你如何兼容sdk<17的设备。
Android Canvas translate() 平移
关于Canvas的translate()。
Android使用高斯模糊实现模糊背景相关推荐
- 四种常见的ps怎么模糊背景的方法
文章总结四种常见的ps怎么模糊背景的方法,通过历史记录画笔.蒙版.钢笔勾勒选区.橡皮擦工具结合模糊命令来模糊背景的思路和操作步骤. 做淘宝店的掌柜们,经常使用模糊背景技术手段来凸显衣服外观.ps怎么模 ...
- Android实现用户圆形头像和模糊背景设计
1.效果展示 2.在build.gradle(Module)中的dependencies里面加入下面依赖 注意:glide依赖的版本 //图片加载框架 implementation 'jp.wasab ...
- Android 图片高斯模糊解决方案
Android 图片高斯模糊解决方案 近年来,图片高斯模糊备受设计师的青睐,在各大知名APP中,如微信.手机QQ.网易云音乐等等都有对背景高斯图模糊的设计,在Adnroid 中,现在常用的图片高斯模糊 ...
- CSS3 设置模糊背景图片
使用filter()函数实现模糊背景 使用方法: -webkit-filter: blur(5px); /* Chrome, Safari, Opera */ filter: blur(5px ...
- html表格中怎么将背景颜色虚化,如何在Photoshop中制作效果惊艳模糊背景!
把背景模糊一下,有时,效果会令人非常惊艳,但是,你知道如何在Photoshop中模糊背景吗? 在今天的教程中,我们将告诉大家,如何使背景模糊,而又不会使我们的主体周围出现光晕. 在这个过程中,我们首先 ...
- html背景视频模糊效果,怎么给竖屏视频添加模糊背景的效果
现在大火的抖音想必大家都知道,身边也有不少朋友在玩,我们观看人像视频的时候会发现很多视频的背景都被加上了模糊的效果,其实这种效果是为了突出人像 ,分清画面主次.那么如果我想使用Vegas(http:/ ...
- android 动态修改 selector,Android Selector 按下修改背景和文本颜色的实现代码
1,selector 按下修改背景和文本颜色 [1]点击改变字体颜色 - android:state_pressed(按压状态) [2]selector状态选择器(bg_btn_two (存放 res ...
- android黑色半透明dialog背景,Android开发中Dialog半透明背景消失
近日,遇到一个Dialog半透明背景消失的问题,背景需求是自定义Dialog实现警告提示框: // 初始化警告弹出框 alertDialog = new EmpAlertView(context, U ...
- android 弹出PopupWindow后背景逐渐变暗
今天,简单讲讲android在弹出 PopupWindow后如何使背景逐渐变暗. 我之前做的效果是在PopupWindow弹出时立即将背景变暗,这个也很简单. 在PopupWindow弹出时,将 ...
最新文章
- restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type
- linux 下的远程上传命令行,使用scp命令用命令行从服务器上传下载文件
- Cisco端口限速配置
- DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...
- await js 报错_async/await优雅的错误处理方法总结
- 疫期免费 “零接触”云迁移~工具替代人力! 人不聚,活儿继续!
- 数学分析:集合理论----习题
- 系统分析师视频教程-张友生
- 世道变坏,从颠覆微信开始
- OP-TEE中的线程管理(四)
- 服务器与Tomcat区别
- 台式计算机开机后黑屏,电脑开机显示黑屏有关的问题与解决方法
- pageoffice在线打开word文件加盖电子印章
- 2022年十大汽车行业新闻
- hadoop集群HA模式(JN+ZK)+yarn搭建
- mpvue 搭建整理
- vTPM环境部署(ubuntu)
- 简要介绍Eclipse
- 一位软件工程师的6年总结
- 一个简单实用的程序员鸡汤
热门文章
- 电子小制作:一个电子节拍器
- 计算机系统使用显示器需配有,在计算机系统中,使用显示器一般需配有( )。...
- llinu启动oracle数据库,RAID与磁盘阵列] USP-V将DS8000虚拟的全过程
- android 魔力锁屏,锁屏软件横评:锁屏功能PK_Android软件合辑_软件合辑_太平洋电脑网PConline...
- 什么是DDOS高防IP
- ddos攻击是什么意思
- shopex之phpunit环境搭建
- menuconfig 配置选项详解
- 编码和字符、字节之间的故事
- c语言入门自学宝典,c语言学习编程宝典下载-c语言学习编程宝典appv1.2 - 起点软件园...