Android中实现iOS中的毛玻璃效果
作者:qq_20118885 时间:2023-01-27 01:44:14
为了实现毛玻璃效果,我们需要一组compute kernels(.rs文件中编写),及一组用于控制renderScript相关的Javaapi(.rs文件自动生成为Java类)。 由于compute kernels的编写需要一定的学习成本,从JELLY_BEAN_MR1开始,Androied内置了一些compute kernels用于常用的操作,其中就包括了Gaussian blur。
下面,通过实操来讲解一下RenderScript来实现高斯模糊,最终实现效果(讲文字背景进行模糊处理):
实现代码:
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><textarea style="width:99%;height:99%">private
void applyBlur() {
image.getViewTreeObserver().addOnPreDrawListener(new
ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
image.getViewTreeObserver().removeOnPreDrawListener(this);
image.buildDrawingCache();
Bitmap bmp = image.getDrawingCache();
blur(bmp, text, true);
return true;
}
});
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg, View view) {
long startMs = System.currentTimeMillis();
float radius = 20;
Bitmap overlay = Bitmap.createBitmap((int)(view.getMeasuredWidth()),
(int)(view.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft(), -view.getTop());
canvas.drawBitmap(bkg, 0, 0, null);
RenderScript rs = RenderScript.create(SecondActivity.this);
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();
statusText.setText("cost " + (System.currentTimeMillis() - startMs) +
"ms");
}</textarea></body></html>
布局如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:Android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/splash"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/text"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Gaussian Blur"
android:textColor="@android:color/black"
android:layout_gravity="center_vertical"
android:textStyle="bold"
android:textSize="48sp" />
<LinearLayout
android:id="@+id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7f000000"
android:orientation="vertical"
android:layout_gravity="bottom" />
</FrameLayout>
以上所述是小编给大家介绍的Android中实现iOS中的毛玻璃效果网站的支持!
来源:http://blog.csdn.net/qq_20118885/article/details/73135549
标签:android,ios,毛玻璃
0
投稿
猜你喜欢
Android加载loading对话框的功能及实例代码(不退出沉浸式效果)
2023-05-14 01:25:33
Java Ehcache缓存框架入门级使用实例
2022-08-23 20:51:54
详解JAVA类加载机制
2023-11-08 04:05:16
Java链表(Linked List)基本原理与实现方法入门示例
2021-10-12 05:49:14
Scala异常处理的方法深入分析
2022-01-09 19:50:35
细谈java同步之JMM(Java Memory Model)
2023-11-23 13:09:33
Spring事务管理方法步骤解析
2021-12-15 20:09:04
java实现的DES加密算法详解
2022-10-01 09:51:11
C#使用Chart绘制曲线
2023-03-12 19:08:56
C#读取配置文件的方法汇总
2022-09-13 08:55:35
Android内置的OkHttp用法介绍
2021-11-29 01:00:53
深入理解SpringMVC中央调度器DispatcherServlet
2023-03-11 08:54:48
Android重要控件SnackBar使用方法详解
2022-11-10 04:49:41
深入理解Java中的弱引用
2023-07-19 20:14:53
springMVC+ajax实现文件上传且带进度条实例
2022-01-15 16:42:36
Java线程生命周期的终止与复位
2022-04-22 01:57:01
C#中using的三种用法
2022-08-04 05:10:59
spring cloud升级到spring boot 2.x/Finchley.RELEASE遇到的坑
2022-01-04 20:40:56
C#添加、读取Word脚注尾注的方法
2022-12-24 02:12:22
Android SlidingDrawer 抽屉效果的实现
2023-08-02 07:58:30