当前位置: 首页 > news >正文

使用Android原生制作毛玻璃效果图片

毛玻璃效果,也被称为模糊效果,是许多现代应用中流行的一种视觉效果。在 Android 中,我们可以通过多种方式实现该效果。本文将探讨如何使用 Android 原生的 Bitmap 类和 RenderScript 来实现毛玻璃效果。

1. 准备工作

首先,你需要确保你的应用已经添加了 RenderScript 支持。在你的 `build.gradle` 文件中,添加以下代码:

gradle
android {defaultConfig {renderscriptTargetApi 21renderscriptSupportModeEnabled true}
}

2. 创建毛玻璃效果函数

以下是使用 RenderScript 制作毛玻璃效果的函数:

java
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v8.renderscript.*;public class BlurBuilder {private static final float BITMAP_SCALE = 0.4f;private static final float BLUR_RADIUS = 7.5f;public static Bitmap blur(Context context, Bitmap image) {int width = Math.round(image.getWidth() * BITMAP_SCALE);int height = Math.round(image.getHeight() * BITMAP_SCALE);Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);RenderScript rs = RenderScript.create(context);ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);theIntrinsic.setRadius(BLUR_RADIUS);theIntrinsic.setInput(tmpIn);theIntrinsic.forEach(tmpOut);tmpOut.copyTo(outputBitmap);return outputBitmap;}
}

3. 使用函数

现在,你可以简单地调用上述函数,为你的 Bitmap 图片添加毛玻璃效果:

java
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);
Bitmap blurredBitmap = BlurBuilder.blur(this, originalBitmap);
imageView.setImageBitmap(blurredBitmap);

---

这样,你就能轻松为你的 Android 应用添加毛玻璃效果了。记住,调整 `BLUR_RADIUS` 可以获得不同程度的模糊效果。你也可以调整 `BITMAP_SCALE` 来改变图像处理的速度和质量。

4.给轮播图背景增加毛玻璃背景

  @NonNullprivate View getImageViewWithBlurredBackground(String url, final int position) {FrameLayout frameLayout = new FrameLayout(getContext());// Blurred ImageViewImageView blurredImageView = new ImageView(getContext());blurredImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);Glide.with(getContext()).asBitmap().load(url).apply(new RequestOptions().priority(Priority.LOW)).into(new CustomTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {Bitmap blurredBitmap = blurBitmap(resource, getContext());blurredImageView.setImageBitmap(blurredBitmap);}@Overridepublic void onLoadCleared(@Nullable Drawable placeholder) {}});frameLayout.addView(blurredImageView, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));// Original ImageViewImageView imageView = new ImageView(getContext());imageView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (onBannerItemClickListener != null) {onBannerItemClickListener.onItemClick(position);}}});imageView.setScaleType(ImageView.ScaleType.CENTER);RequestOptions options = new RequestOptions().fitCenter().placeholder(defaultImage).priority(Priority.HIGH);if (defaultImage != 0) {Glide.with(getContext()).load(url).apply(options).transition(withCrossFade()).into(imageView);} else {Glide.with(getContext()).load(url).apply(options).into(imageView);}frameLayout.addView(imageView, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));return frameLayout;}

看下最终效果:

相关文章:

使用Android原生制作毛玻璃效果图片

毛玻璃效果&#xff0c;也被称为模糊效果&#xff0c;是许多现代应用中流行的一种视觉效果。在 Android 中&#xff0c;我们可以通过多种方式实现该效果。本文将探讨如何使用 Android 原生的 Bitmap 类和 RenderScript 来实现毛玻璃效果。 1. 准备工作 首先&#xff0c;你需要…...

软件设计的七大原则

一. 软件设计的七大原则 单一职责原则&#xff1a;一个类只负责一个功能领域中的饿相应职责。开闭原则&#xff1a;对扩展开放&#xff0c;对修改关闭&#xff0c;多使用抽象类和接口&#xff0c;应该尽量使这个系统能够扩展新的功能&#xff0c;通过扩展来实现变化&#xff0…...

Windows下安装配置Nginx

nginx安装 官网下载地址 https://nginx.org/en/download.html 推荐使用稳定版本 截止时间2023年9月5日稳定版本为 1.24.0 百度网盘 链接&#xff1a;https://pan.baidu.com/s/1cXm-jN2fMzKdVMRhbG72Fg 提取码&#xff1a;9hcq 下载完成以后,得到nginx压缩包; 双击启动nginx.…...

数据结构类型

1.在C和C中static关键字的用法 在C中 1.static修饰未初始化全局变量&#xff0c;默认结果为0 2.static修饰局部变量&#xff0c;延长生命周期&#xff0c;生命周期不是作用域&#xff0c;它依旧是局部变量 3.static修饰函数只能在当前文件中调用&#xff0c;不可用跨文件调用…...

WPF元素绑定

简单的说&#xff0c;数据绑定是一种关系&#xff0c;该关系告诉WPF从源对象提取一些信息&#xff0c;并用这些信息设置目标对象的属性。目标属性始终是依赖属性&#xff0c;通常位于WPF元素中——毕竟&#xff0c;WPF数据绑定的最终目标是在用户界面中显示一些信息。然而&…...

centos编译升级cmake,痛苦的Linux小白

环境 root 用户 下载 cmake官网下载地址&#xff1a;https://cmake.org/download/ 获取下载地址&#xff0c;右击cmake-3.27.4.tar.gz 命令行输入链接地址&#xff0c;下载 wget https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4.tar.gz解压 tar -zx…...

Unity资源无法下载 反复提示需同意Terms of Service和EULA 同意后无效的解决方案

前言 最近在玩Unity&#xff0c;跟着tutorial做点项目&#xff0c;但是在下载免费资源时&#xff0c;只有从网站上点“打开Unity”&#xff0c;才能在本地Unity Editor的Package Manager里找到这个资源&#xff08;且点一下下面的刷新就没有了&#xff09;&#xff0c;并且点击…...

记录--vue 拉伸指令

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 在我们项目开发中,经常会有布局拉伸的需求,接下来 让我们一步步用 vue指令 实现这个需求 动手开发 在线体验 codesandbox.io/s/dawn-cdn-… 常规使用 解决拉伸触发时机 既然我们使用了指令的方式…...

前端缓存方法有哪些?cookie有哪些属性?

这里写目录标题 前端缓存方法有哪些&#xff1a;cookie有哪些属性&#xff1f; 前端缓存方法有哪些&#xff1a; Browser Cache&#xff08;浏览器缓存&#xff09;: 当浏览器请求一个资源&#xff08;例如图片、CSS、JS 文件&#xff09;时&#xff0c;它会首先检查自己的缓存…...

在PHP8中遍历数组-PHP8知识详解

所谓遍历数组就是把数组中的变量值读取出来。遍历数组中的所有元素对程序员来说是经常使用的操作&#xff0c;通过遍历数组可以完成数组元素的查询工作。 这好比你去商场买东西一样&#xff0c;要买什么东西&#xff0c;就去该区域浏览一遍&#xff0c;以便找出适合自己的产品…...

代码随想录算法训练营之JAVA|第四十三天|139. 单词拆分

今天是第 天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天。 算法挑战链接 139. 单词拆分https://leetcode.cn/problems/word-break/ 第一想法 看完之后完全没有想法。 看完代码随想录之后的想法 这是一个完全背包的问题&#xff0c;使用完全背包的解法。 单词就…...

解决VUE3项目部署后存在缓存页面不更新的问题

方法一&#xff1a; 找到项目中的index.html文件&#xff0c;在头部加上以下代码 <meta http-equiv"Pragma" content"no-cache"> <meta http-equiv"Cache-control" content"no-cache"> <meta http-equiv"Cache&…...

私募证券基金动态-23年8月报

成交量&#xff1a;8月日均8,252.00亿元 8月A股两市日均成交8,252.00亿元&#xff0c;环比下降12.23%、同比下降18.11%。8月整体23个交易日&#xff0c;仅有3个交易日单日成交金额过万亿&#xff0c;且成交量起伏较大&#xff0c;单日成交金额最低仅有6805.32亿元&#xff08;…...

Qt/C++音视频开发49-推流到各种流媒体服务程序

一、前言 最近将推流程序完善了很多功能&#xff0c;尤其是增加了对多种流媒体服务程序的支持&#xff0c;目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等&#xff0c;其中经过大量的对比测试&#xff0c;个人比较建议使用mediamtx和…...

深度学习学习笔记——解决过拟合问题的方法:权重衰减和暂退法,与正则化之间的关系

解决过拟合问题是机器学习和深度学习中关键的任务之一&#xff0c;因为它会导致模型在训练数据上表现良好&#xff0c;但在未见数据上表现不佳。以下是一些解决过拟合问题的常见方法&#xff1a; 增加训练数据&#xff1a; 增加更多的训练数据可以帮助模型更好地捕捉数据的真实…...

【Leetcode Sheet】Weekly Practice 5

Leetcode Test 823 带因子的二叉树(8.29) 给出一个含有不重复整数元素的数组 arr &#xff0c;每个整数 arr[i] 均大于 1。 用这些整数来构建二叉树&#xff0c;每个整数可以使用任意次数。其中&#xff1a;每个非叶结点的值应等于它的两个子结点的值的乘积。 满足条件的二…...

STM32 SPI对存储芯片发送写是能命令后一直忙等待

我采用CUBE配置的SPI外设&#xff0c;对NSS引脚选择了硬件输出&#xff0c;这种方式对读取命令没有影响&#xff0c;但是对写命令有&#xff0c;当我发送写是能命令后&#xff0c;读取状态寄存器的值一直都是忙&#xff0c;我猜测这可能是硬件控制NSS引脚后&#xff0c;对于HAL…...

MySql学习笔记01——SQL的相关术语

SQL&#xff08;相关术语&#xff09; 数据库database 有组织的存储数据的容器&#xff0c;通常是一个文件或者一组文件 表table 存储数据的文件称为表&#xff0c;表是某种特定数据的结构化清单。 表可以保存顾客清单、产品目录&#xff0c;或者其他信息清单。 要注意的是&am…...

SpringMVC入门指南

目录 前言 一、什么是SpringMVC 二、MVC架构模式 三、SpringMVC的工作流程 四、SpringMVC核心组件 五、SpringMVC的优势 六、SpringMVC的配置与常用注解 七、SpringMvc请求处理流程、 控制器的编写 、视图的渲染 1.请求处理流程&#xff1a; 2.控制器的编写&#xff1…...

mysql忘记root密码如何解决?

第一步&#xff1a;首先右键此电脑打开管理器&#xff0c;查看mysql是否运行 第二步&#xff1a;用管理员模式打开命令框 输入net stop mysql暂停mysql运行 net stop mysql 然后输入下面指令 mysql --console --skip-grant-tables --shared-memory 显示如下 第三步&…...

揭秘Synopsys EDA中的AI黑科技:DSO.ai如何改变传统芯片设计流程

揭秘Synopsys EDA中的AI黑科技&#xff1a;DSO.ai如何重塑芯片设计范式 当芯片制程迈入3纳米时代&#xff0c;单个晶体管尺寸已接近物理极限&#xff0c;设计复杂度却呈指数级增长。传统EDA工具如同手持计算尺的工程师面对摩天大楼蓝图——方法论需要根本性变革。这正是DSO.ai诞…...

百川2-13B-Chat惊艳效果展示:同一提示词下Temperature=0.3与0.9输出对比

百川2-13B-Chat惊艳效果展示&#xff1a;同一提示词下Temperature0.3与0.9输出对比 你有没有想过&#xff0c;同一个问题问给同一个AI&#xff0c;为什么每次的回答都不太一样&#xff1f;有时候它像个严谨的学者&#xff0c;回答得一丝不苟&#xff1b;有时候又像个天马行空的…...

出差党/远程办公必备:用OpenWrt软路由打造你的随身‘家庭办公室’(支持Windows远程唤醒与桌面)

移动办公革命&#xff1a;OpenWrt软路由构建高效远程办公系统 1. 现代远程办公的痛点与解决方案 作为一名常年奔波于各大城市的咨询顾问&#xff0c;我深刻理解移动办公的痛点&#xff1a;酒店网络不稳定、公共WiFi安全隐患、重要文件无法随时调取、高性能工作站闲置在家...直到…...

特斯拉行车记录仪视频合并神器:告别碎片化,一键生成完整记录

特斯拉行车记录仪视频合并神器&#xff1a;告别碎片化&#xff0c;一键生成完整记录 【免费下载链接】tesla_dashcam Convert Tesla dash cam movie files into one movie 项目地址: https://gitcode.com/gh_mirrors/te/tesla_dashcam 还在为特斯拉行车记录仪生成的海量…...

从零搭建中文资源媒体中心:Kodi中文插件库完全指南

从零搭建中文资源媒体中心&#xff1a;Kodi中文插件库完全指南 【免费下载链接】xbmc-addons-chinese Addon scripts, plugins, and skins for XBMC Media Center. Special for chinese laguage. 项目地址: https://gitcode.com/gh_mirrors/xb/xbmc-addons-chinese 你是…...

GTE中文文本嵌入模型部署案例:中小企业文档去重降本提效

GTE中文文本嵌入模型部署案例&#xff1a;中小企业文档去重降本提效 1. 项目背景与价值 中小企业日常运营中会产生大量文档资料&#xff0c;包括合同文件、产品说明、客户沟通记录、内部报告等。这些文档往往存在重复内容&#xff0c;导致存储空间浪费、信息检索困难、管理成…...

为什么C++开发者需要关注LunaSVG这个SVG渲染库?

为什么C开发者需要关注LunaSVG这个SVG渲染库&#xff1f; 【免费下载链接】lunasvg lunasvg is a standalone SVG rendering library in C 项目地址: https://gitcode.com/gh_mirrors/lu/lunasvg 在现代软件开发中&#xff0c;矢量图形处理已经成为许多应用程序的核心需…...

YOLO12快速部署教程:无需配置,一键启动Web检测界面

YOLO12快速部署教程&#xff1a;无需配置&#xff0c;一键启动Web检测界面 1. 引言 目标检测技术作为计算机视觉领域的核心任务之一&#xff0c;在安防监控、自动驾驶、工业质检等领域有着广泛应用。YOLO系列模型因其出色的实时性能一直备受关注&#xff0c;而最新发布的YOLO…...

懒人精灵实战:用Lua脚本读写安卓手游内存(以libunity.so为例)

懒人精灵实战&#xff1a;用Lua脚本读写安卓手游内存&#xff08;以libunity.so为例&#xff09; 在移动游戏开发与逆向工程领域&#xff0c;内存读写技术一直是一个既神秘又实用的技能。对于想要深入了解游戏机制或进行自动化测试的开发者来说&#xff0c;掌握这项技术无疑会带…...

超越跑分:Gemini 3.1 Pro 2026年多维度能力评估体系深度拆解

对于追求精准选型的开发者和研究者而言&#xff0c;评估Gemini 3.1 Pro的真正实力需超越简单问答&#xff0c;而应建立一套涵盖推理、代码、长文本、安全性的多维度评估体系。目前&#xff0c;通过RskAi&#xff08;www.rsk.cn&#xff09;等聚合镜像站是国内用户以零成本、直接…...