技术调研,可以给一些优缺点的对比.,目前主流实现毛玻璃效果(高斯模糊)分大致三种方法:

一 利用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)下毛玻璃(磨砂)效果如何实现?相关推荐

  1. android 实现磨砂效果_Android 5.0 下毛玻璃(磨砂)效果如何实现?

    刚刚做技术调研,可以给一些优缺点的对比. 目前主流实现毛玻璃效果(高斯模糊)分大致三种方法: 一 利用RenderScript接口 利用现有Android结构,通过RenderScript调用底层接口 ...

  2. android 系统下拉菜单,【MotoX评测】原生Android5.0下拉菜单和基础设置_Moto X_手机评测-中关村在线...

    ■ 柔和的阶段性下拉菜单 受益于Android5.0的变化,新Moto X的下拉菜单采用的是浮在界面上方的下拉框,并且分为双步下拉(第一步下拉是通知中心,第二步下拉可调出快捷选项),视觉效果和操作体验 ...

  3. (转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化

    原文:https://blog.csdn.net/gaoxiaoweiandy/article/details/83216001 从Android5.0到Android9.0 自从公司提出了一些出其不 ...

  4. Android高级进阶--插曲-从Android5.0到Android10各版本变化

    从Android5.0到Android10 一.Android5 1.ANDROID 5.0 行为变更: 声音和振动 (1)如果您当前使用 Ringtone.MediaPlayer 或 Vibrato ...

  5. php下拉框选中效果,jquery模拟select下拉框效果

    最近开发一网站的过程中碰到个需求,没有使用传统的select下拉框,而是使用了现代比较美观的一些元素设计了一个下拉框.对于这种东东,第一反应就是使用jquery来模拟了,还好,网上找了下,很快就找到了 ...

  6. android r 新建分区_Android实现从下往上弹出视差效果(Activity)

    先看下效果 背景 现在很多App设计会存在浏览模式,在没有登录情况下点击相关用户操作会跳转到登录页面LoginActivity,登录页面跳转常见的为从左向右,从下往上等视差效果,下面就来讲讲开启时从下 ...

  7. Android自定义View(四)——仿Android5.0波纹效果

    项目源码比较简单,直接看帖的代码就可以了. 说实话,我是真没有去看RippleView的源码,只是从表面看到它的效果,所以产生了一点思路,所以功能很有局限性,而且用起来也比较复杂,大家且看且喷就好^_ ...

  8. android 动态获取全县_android 6.0之后动态获取权限

    1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在 ...

  9. android金币动效_Android 仿余额宝数字跳动动画效果完整代码

    一:想都不用想的,有图有真相,看着爽了,在看下面源码 二:实例源码分析 ①:首先定义接口 package com.demo.tools.view; /** * 数字动画自定义 * * @author ...

  10. android 按钮顶级效果_Android 中按钮的点击效果

    Android 中按钮点击后的效果通常是通过更换图片,或者背景色来实现的. 之前做的一直都是手动写在点击事件里,今天发现了一种更合适的方法,写在xml文件中. 比如,我有两张图片,一张是点击前的bef ...

最新文章

  1. Ubuntu开机自启动 读取.bashrc
  2. 【swjtu】数据结构实验_二叉树的字符图形显示程序(半期)
  3. 1.3 更多边缘检测内容-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. 数据中心如何建设,数据中心机房维护方法详解!
  5. JSP 编译原理:JSP 是 Servlet?如何用 Eclipse 查看 JSP 编译生成的 Servlet 源文件?
  6. NLOPT ros下的使用
  7. ES11新特性_Promise.allSettled---JavaScript_ECMAScript_ES6-ES11新特性工作笔记062
  8. Android Revolution
  9. oracle的sql的语法解析,oracle SQL解析步骤小结
  10. 电子行业ERP解决方案
  11. 360p2刷无线打印服务器,【联网版】360路由器P2刷tomato固件小白教程
  12. 利用laravel框架创建todos
  13. ae渲染文件服务器,在 After Effects 中自动执行渲染和网络渲染
  14. android录制视频设置分辨率,Android录制视频的全面屏适配
  15. 0xc0000005 系统应用日志_关于游戏崩溃并提示0xC0000005错误的解决方案!
  16. c语言74hc595程序,74hc595使用方法与单片机驱动源程序
  17. 两年数据对比柱形图_职场必学技能,用PPT组合图表玩转多重数据分析展示!
  18. 红外图像盲元检测matlab,红外焦平面阵列盲元类型与判别.pdf
  19. PyTorch 实现 Skip-gram
  20. ODU帧转OTU帧流程

热门文章

  1. Mace-micro引擎编译与测试
  2. PHP脚本定时任务实现及crontab实现定时任务
  3. sql内连接、左连接、右连接以及全连接查询
  4. LCD1602液晶显示屏的字符显示
  5. 怎么设置可以将资料横向打印出来
  6. 程序员快速熟悉新项目和业务逻辑的技巧
  7. 2017华为实习生招聘机考模拟题——0交换排序
  8. iOS IM自研方案
  9. python中excel处理及生成图表
  10. Python3.x爬虫下载网页图片