android 实现磨砂效果_Android(Android5.0)下毛玻璃(磨砂)效果如何实现?
技术调研,可以给一些优缺点的对比.,目前主流实现毛玻璃效果(高斯模糊)分大致三种方法:
一 利用RenderScript接口
利用现有Android结构,通过RenderScript调用底层接口实现高斯模糊计算.
// Remix Blur
private void blur(Bitmap bkg, View view) {
…
RenderScript rs = RenderScript.create(getActivity());
Allocation overlayAlloc = Allocation.createFromBitmap(rs, overlay);
ScriptIntrinsicBlur blur =
ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement());
blur.setInput(overlayAlloc);
blur.setRadius(radius);
blur.forEach(overlayAlloc);
overlayAlloc.copyTo(overlay);
view.setBackground(new BitmapDrawable(getResources(), overlay));
rs.destroy();
}
说明 :
这种方法直接利用Android系统提供的机制, 从代码实现上是最简单也相对高效的实现. 在此过程中遇到的很现实的问题是: 1. 当模糊半径 (radius)变大后会直接出现计算性能问题. 2. ScriptIntrinsicBlur脚本模糊半径不能大于25. 因此, 直接使用ScriptIntrinsicBlur不能得到模糊程度较高的图片.
考虑到高斯模糊是计算周边像素平均值,在模糊程度很高的情况下,逐点计算平均值从显示效果上优势并不明显.可以通过将图片压缩成小图,计算小图的高斯模糊, 再将小图放大的方法来模拟大半径高斯模糊的效果.
二 在低版本Android中通过Java实现高斯模糊
可以参考如下代码实现
https://github.com/paveldudka/blurring/blob/master/app/src/main/java/com/paveldudka/util/FastBlur.java
这种方式通过在Java层中直接实现高斯模糊算法.在大模糊半径和大图片情况下,性能会出现问题.基本目前只作为对低版本Android客户端的兼容性方案使用.
三 通过OpenGL直接实现
没有具体实践过, 可以参考muzei壁纸的实现, 无论从效果和实时性来讲都是最好的. 但需要根据需求来看是否真的有这样的实时性要求. 这种方式从显示效果上会优于第一种方法,甚至可以达到渐变的效果.但这些计算都是以耗电作为代价的. 作为Launcher这种系统级别的应用, 在显示效果差异并不明显的情况下, 建议综合考虑耗电量, 以及内存和计算性能的消耗. 》
其中一个关键技巧是: 先压缩原图大小再高斯. 这样能够大大减少高斯计算量, 提高性能.
Android StackBlur 图片模糊效果工具类
这个问题要分两部分来看。
第一是
模糊算法,主要目前有两种方案:
(1)借助Renderscript做高斯模糊,这个本质上是做了个卷积计算。
(2)用jni实现StackBlur 算法对图片进行模糊处理,这个可以看下源码,相较于高斯模糊,计算量小了很多。
两种方案都可以进行对Bitmap对象的模糊处理,但当模糊半径增大时,StackBlur能够保持较好的性能,且不受Renderscript半径25px的限制。这两种方案都可以通过对原图进行压缩采样方式优化。至于模糊结果,可以看实际效果,个人认为均可满足需求。
第二是
使用场景,同样分为两种:
(1)非实时处理:比如说用做背景虚化,这种场合下对性能要求不是太苛刻,只要保证在非主线程处理好图片,之后填充即可。上面两种方案都可满足需求。
下面是stackblur的一个android实现
https://github.com/kikoso/android-stackblur
(2)实时处理:比如说需要在滚动的ListView或者ScrollView上添加毛玻璃遮罩。由于待虚化的Bitmap不是固定不变的,这就需要我们逐帧处理。这个时候半径如果大的话,Renderscript会出现明显的卡顿,而StackBlur方案在中高端机器上会有不错的表现。
下面是一个比较好的开源的android实现,使用起来比较简单
https://github.com/harism/android_anndblur
其原理是自定义容器控件,通过重绘的方式获取自身原本要绘制的bitmap纹理,然后实时处理并填充到自身的背景中,能保证基本的流畅度。注意会除了模糊处理,还会引发多余的绘制操作。铁定会拖慢UI的流畅度。
对于实时毛玻璃效果,建议还是多做测试,毕竟耗费计算资源,甚至可以监控fps设置阈值对特效进行开关。
给一个图片,质量压缩到很小,然后方大,然后对这个图片进行blur,blur网上有很多方法,都可以用。压缩到很小后,放大然后blur,速度非常快。
android 实现磨砂效果_Android(Android5.0)下毛玻璃(磨砂)效果如何实现?相关推荐
- android 实现磨砂效果_Android 5.0 下毛玻璃(磨砂)效果如何实现?
刚刚做技术调研,可以给一些优缺点的对比. 目前主流实现毛玻璃效果(高斯模糊)分大致三种方法: 一 利用RenderScript接口 利用现有Android结构,通过RenderScript调用底层接口 ...
- android 系统下拉菜单,【MotoX评测】原生Android5.0下拉菜单和基础设置_Moto X_手机评测-中关村在线...
■ 柔和的阶段性下拉菜单 受益于Android5.0的变化,新Moto X的下拉菜单采用的是浮在界面上方的下拉框,并且分为双步下拉(第一步下拉是通知中心,第二步下拉可调出快捷选项),视觉效果和操作体验 ...
- (转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化
原文:https://blog.csdn.net/gaoxiaoweiandy/article/details/83216001 从Android5.0到Android9.0 自从公司提出了一些出其不 ...
- Android高级进阶--插曲-从Android5.0到Android10各版本变化
从Android5.0到Android10 一.Android5 1.ANDROID 5.0 行为变更: 声音和振动 (1)如果您当前使用 Ringtone.MediaPlayer 或 Vibrato ...
- php下拉框选中效果,jquery模拟select下拉框效果
最近开发一网站的过程中碰到个需求,没有使用传统的select下拉框,而是使用了现代比较美观的一些元素设计了一个下拉框.对于这种东东,第一反应就是使用jquery来模拟了,还好,网上找了下,很快就找到了 ...
- android r 新建分区_Android实现从下往上弹出视差效果(Activity)
先看下效果 背景 现在很多App设计会存在浏览模式,在没有登录情况下点击相关用户操作会跳转到登录页面LoginActivity,登录页面跳转常见的为从左向右,从下往上等视差效果,下面就来讲讲开启时从下 ...
- Android自定义View(四)——仿Android5.0波纹效果
项目源码比较简单,直接看帖的代码就可以了. 说实话,我是真没有去看RippleView的源码,只是从表面看到它的效果,所以产生了一点思路,所以功能很有局限性,而且用起来也比较复杂,大家且看且喷就好^_ ...
- android 动态获取全县_android 6.0之后动态获取权限
1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在 ...
- android金币动效_Android 仿余额宝数字跳动动画效果完整代码
一:想都不用想的,有图有真相,看着爽了,在看下面源码 二:实例源码分析 ①:首先定义接口 package com.demo.tools.view; /** * 数字动画自定义 * * @author ...
- android 按钮顶级效果_Android 中按钮的点击效果
Android 中按钮点击后的效果通常是通过更换图片,或者背景色来实现的. 之前做的一直都是手动写在点击事件里,今天发现了一种更合适的方法,写在xml文件中. 比如,我有两张图片,一张是点击前的bef ...
最新文章
- Ubuntu开机自启动 读取.bashrc
- 【swjtu】数据结构实验_二叉树的字符图形显示程序(半期)
- 1.3 更多边缘检测内容-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 数据中心如何建设,数据中心机房维护方法详解!
- JSP 编译原理:JSP 是 Servlet?如何用 Eclipse 查看 JSP 编译生成的 Servlet 源文件?
- NLOPT ros下的使用
- ES11新特性_Promise.allSettled---JavaScript_ECMAScript_ES6-ES11新特性工作笔记062
- Android Revolution
- oracle的sql的语法解析,oracle SQL解析步骤小结
- 电子行业ERP解决方案
- 360p2刷无线打印服务器,【联网版】360路由器P2刷tomato固件小白教程
- 利用laravel框架创建todos
- ae渲染文件服务器,在 After Effects 中自动执行渲染和网络渲染
- android录制视频设置分辨率,Android录制视频的全面屏适配
- 0xc0000005 系统应用日志_关于游戏崩溃并提示0xC0000005错误的解决方案!
- c语言74hc595程序,74hc595使用方法与单片机驱动源程序
- 两年数据对比柱形图_职场必学技能,用PPT组合图表玩转多重数据分析展示!
- 红外图像盲元检测matlab,红外焦平面阵列盲元类型与判别.pdf
- PyTorch 实现 Skip-gram
- ODU帧转OTU帧流程