iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android中怎么实现毛玻璃背景效果
  • 786
分享到

Android中怎么实现毛玻璃背景效果

android 2023-05-30 23:05:58 786人浏览 薄情痞子
摘要

这篇文章给大家介绍Android中怎么实现毛玻璃背景效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。思路:     1.使用findViewByid获得需要设置毛玻璃的控件。&

这篇文章给大家介绍Android中怎么实现毛玻璃背景效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

思路:

     1.使用findViewByid获得需要设置毛玻璃的控件。

     2.调用 setBlurBackground(Bitmap bmp)方法(下面会给出),参数为Bitmap类型,给控件设置毛玻璃背景!

     3.已完成,

方法:

private void setBlurBackground(Bitmap bmp){  final Bitmap blurBmp = BlurUtil.fastblur(ParentCircleInfoActivity.this, bmp, 10);//0-25,表示模糊值  final Drawable drawable = ImageUtil.getDrawable(this,blurBmp);//将bitmap类型图片 转为 Drawable类型  mRLHead.post(new Runnable() //调用UI线程  {    @Override    public void run()    {      mRLHead.setBackgroundDrawable(drawable);    }  });}bitmap 转 drawable:public static Drawable getDrawable(Context context, Bitmap bm){  BitmapDrawable bd= new BitmapDrawable(context.getResources(),bm);  return bd;}使用到的工具类:public class BlurUtil {   @SuppressLint("Newapi")  public static Bitmap fastblur(Context context, Bitmap sentBitmap, int radius)   {    if (VERSioN.SDK_INT > 16)    {         Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);      final RenderScript rs = RenderScript.create(context);     final Allocation input = Allocation.createFromBitmap(rs,sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,Allocation.USAGE_SCRIPT);     final Allocation output = Allocation.createTyped(rs,input.getType());     final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));     script.setRadius(radius);     script.setInput(input);     script.forEach(output);          output.copyTo(bitmap);         return bitmap;     }      Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);    if (radius < 1)     {      return (null);    }    int w = bitmap.getWidth();    int h = bitmap.getHeight();    int[] pix = new int[w * h];    Log.e("pix", w + " " + h + " " + pix.length);    bitmap.getPixels(pix, 0, w, 0, 0, w, h);    int wm = w - 1;    int hm = h - 1;    int wh = w * h;    int div = radius + radius + 1;    int r[] = new int[wh];    int g[] = new int[wh];    int b[] = new int[wh];    int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;    int vmin[] = new int[Math.max(w, h)];    int divsum = (div + 1) >> 1;    divsum *= divsum;    int dv[] = new int[256 * divsum];    for (i = 0; i < 256 * divsum; i++)    {      dv[i] = (i / divsum);    }    yw = yi = 0;    int[][] stack = new int[div][3];    int stackpointer;    int stackstart;    int[] sir;    int rbs;    int r1 = radius + 1;    int routsum, Goutsum, boutsum;    int rinsum, ginsum, binsum;    for (y = 0; y < h; y++)    {      rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;      for (i = -radius; i <= radius; i++)      {        p = pix[yi + Math.min(wm, Math.max(i, 0))];        sir = stack[i + radius];        sir[0] = (p & 0xff0000) >> 16;        sir[1] = (p & 0x00ff00) >> 8;        sir[2] = (p & 0x0000ff);        rbs = r1 - Math.abs(i);        rsum += sir[0] * rbs;        gsum += sir[1] * rbs;        bsum += sir[2] * rbs;        if (i > 0)        {          rinsum += sir[0];          ginsum += sir[1];          binsum += sir[2];        }        else        {          routsum += sir[0];          goutsum += sir[1];          boutsum += sir[2];        }      }      stackpointer = radius;      for (x = 0; x < w; x++)       {        r[yi] = dv[rsum];        g[yi] = dv[gsum];        b[yi] = dv[bsum];        rsum -= routsum;        gsum -= goutsum;        bsum -= boutsum;        stackstart = stackpointer - radius + div;        sir = stack[stackstart % div];        routsum -= sir[0];        goutsum -= sir[1];        boutsum -= sir[2];        if (y == 0)         {          vmin[x] = Math.min(x + radius + 1, wm);        }        p = pix[yw + vmin[x]];        sir[0] = (p & 0xff0000) >> 16;        sir[1] = (p & 0x00ff00) >> 8;        sir[2] = (p & 0x0000ff);        rinsum += sir[0];        ginsum += sir[1];        binsum += sir[2];        rsum += rinsum;        gsum += ginsum;        bsum += binsum;        stackpointer = (stackpointer + 1) % div;        sir = stack[(stackpointer) % div];        routsum += sir[0];        goutsum += sir[1];        boutsum += sir[2];        rinsum -= sir[0];        ginsum -= sir[1];        binsum -= sir[2];        yi++;      }      yw += w;    }    for (x = 0; x < w; x++)     {      rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;      yp = -radius * w;      for (i = -radius; i <= radius; i++)       {        yi = Math.max(0, yp) + x;        sir = stack[i + radius];        sir[0] = r[yi];        sir[1] = g[yi];        sir[2] = b[yi];        rbs = r1 - Math.abs(i);        rsum += r[yi] * rbs;        gsum += g[yi] * rbs;        bsum += b[yi] * rbs;        if (i > 0)         {          rinsum += sir[0];          ginsum += sir[1];          binsum += sir[2];        }         else         {          routsum += sir[0];          goutsum += sir[1];          boutsum += sir[2];        }        if (i < hm)         {          yp += w;        }      }      yi = x;      stackpointer = radius;      for (y = 0; y < h; y++)       {        pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];        rsum -= routsum;        gsum -= goutsum;        bsum -= boutsum;        stackstart = stackpointer - radius + div;        sir = stack[stackstart % div];        routsum -= sir[0];        goutsum -= sir[1];        boutsum -= sir[2];        if (x == 0)         {          vmin[y] = Math.min(y + r1, hm) * w;        }        p = x + vmin[y];        sir[0] = r[p];        sir[1] = g[p];        sir[2] = b[p];        rinsum += sir[0];        ginsum += sir[1];        binsum += sir[2];        rsum += rinsum;        gsum += ginsum;        bsum += binsum;        stackpointer = (stackpointer + 1) % div;        sir = stack[stackpointer];        routsum += sir[0];        goutsum += sir[1];        boutsum += sir[2];        rinsum -= sir[0];        ginsum -= sir[1];        binsum -= sir[2];        yi += w;      }    }    bitmap.setPixels(pix, 0, w, 0, 0, w, h);    return (bitmap);  }}

关于Android中怎么实现毛玻璃背景效果就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Android中怎么实现毛玻璃背景效果

本文链接: https://www.lsjlt.com/news/221907.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中怎么实现毛玻璃背景效果
    这篇文章给大家介绍Android中怎么实现毛玻璃背景效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。思路:     1.使用findViewByid获得需要设置毛玻璃的控件。&...
    99+
    2023-05-30
    android
  • Android开发Activity毛玻璃背景效果
    本文实例为大家分享了Android开发Activity毛玻璃背景效果的具体代码,供大家参考,具体内容如下 step1:先进行截屏操作 step2:进行毛玻璃处理 毛玻璃处理的原理为先...
    99+
    2022-11-13
    Android Activity毛玻璃背景 Activity毛玻璃效果 Android毛玻璃背景
  • CSS中怎么实现毛玻璃效果
    CSS中怎么实现毛玻璃效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。<!DOCTYPE html> &nb...
    99+
    2024-04-02
  • 利用Flutter实现背景图片毛玻璃效果实例
    目录前言使用 canvas 绘制图片更改绘制图片的绘制范围毛玻璃效果实现总结前言 继续我们绘图相关篇章,这次我们来看看如何使用 CustomPaint 实现毛玻璃背景图效果。毛玻璃背...
    99+
    2024-04-02
  • CSS3中实现毛玻璃效果
    这期内容当中小编将会给大家带来有关CSS3中实现毛玻璃效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。body {    min-height:&nbs...
    99+
    2023-06-08
  • CSS3如何实现毛玻璃效果
    这篇文章主要介绍“CSS3如何实现毛玻璃效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS3如何实现毛玻璃效果”文章能帮助大家解决问题。代码如下:body {  ...
    99+
    2023-07-05
  • Android实现毛玻璃效果弹出菜单动画
    本文实例为大家分享了Android实现毛玻璃效果弹出菜单动画的具体代码,供大家参考,具体内容如下 仿ios上屏幕下方向上滑出来的一个模糊菜单,效果如下 原理很简单,页面上原来有...
    99+
    2022-11-13
    Android毛玻璃效果 Android毛玻璃菜单 Android弹出菜单
  • 怎么用CSS3实现毛玻璃模糊效果
    这篇文章主要介绍“怎么用CSS3实现毛玻璃模糊效果”,在日常操作中,相信很多人在怎么用CSS3实现毛玻璃模糊效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用CSS3实...
    99+
    2024-04-02
  • css怎么实现毛玻璃效果的方法
    这篇文章将为大家详细讲解有关css怎么实现毛玻璃效果的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使...
    99+
    2023-06-15
  • Android开发中怎么实现一个iOS中的毛玻璃效果
    本篇文章为大家展示了Android开发中怎么实现一个iOS中的毛玻璃效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。实现代码:<html><head> <meta h...
    99+
    2023-05-31
    android ios roi
  • CSS3如何实现磨砂玻璃背景效果
    这篇文章主要为大家展示了“CSS3如何实现磨砂玻璃背景效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS3如何实现磨砂玻璃背景效果”这篇文章吧。效果图及实...
    99+
    2024-04-02
  • 如何实现C++语言中的毛玻璃效果
    今天就跟大家聊聊有关如何实现C++语言中的毛玻璃效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在基于Windows Vista的普通Windows应用程序及对话框程序中,如何利用...
    99+
    2023-06-17
  • OpenCV-PS扩散毛玻璃效果的实现代码
    实现原理 PS的扩散效果可以产生类似毛玻璃质感的效果,使画面有些毛毛的感觉。其实现可通过操作像素三通道数值的方式实现,定义一个随机数器,将图像中任一点的数值赋值为,以该点为中心一定尺...
    99+
    2024-04-02
  • 如何在Android中使用RenderScript实现一个毛玻璃模糊效果
    今天就跟大家聊聊有关如何在Android中使用RenderScript实现一个毛玻璃模糊效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。RenderScript 介绍在开始之前,先...
    99+
    2023-05-31
    android renderscript ers
  • Qt实现简易毛玻璃效果的示例代码
    目录现有功能运行结果源码frosted_glass_label.hfrosted_glass_label.cppmain.cpp现有功能 1.用模糊功能实现简易的毛玻璃效果。 2.鼠...
    99+
    2024-04-02
  • 如何使用CSS实现毛玻璃特效
    这篇文章主要介绍“如何使用CSS实现毛玻璃特效”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用CSS实现毛玻璃特效”文章能帮助大家解决问题。一、backdrop-filter 是金手指吗?毛玻...
    99+
    2023-06-29
  • 如何使用纯CSS实现底层毛玻璃效果
    这篇“如何使用纯CSS实现底层毛玻璃效果”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“如何使用纯CSS实现底层毛玻璃效果”,小编整理了以下知识点,请大家跟着小...
    99+
    2024-04-02
  • 怎么实现Opencv马赛克和毛玻璃效果与图片融合
    这篇文章主要介绍“怎么实现Opencv马赛克和毛玻璃效果与图片融合”,在日常操作中,相信很多人在怎么实现Opencv马赛克和毛玻璃效果与图片融合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现Openc...
    99+
    2023-06-25
  • Windows 10 Build 10074为什么没有毛玻璃效果?
    在最新的Windows 10 Build 10074版中,微软将Windows 7中备受用户喜爱的毛玻璃特效给“复活”了。但遗憾的是,部分安装了该版本的用户发现他们的系统并没有出现这一特效,这是为...
    99+
    2023-06-14
    win10毛玻璃效果 win10毛玻璃 效果 毛玻璃
  • 如何利用CSS如何实现全兼容的毛玻璃效果
    这篇文章主要讲解了“如何利用CSS如何实现全兼容的毛玻璃效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用CSS如何实现全兼容的毛玻璃效果”吧!通过...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作