介绍
今天就跟大家聊聊有关如何在Android中使用RenderScript实现一个毛玻璃模糊效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强> RenderScript介绍强>
在开始之前,先看下RenderScript的官方介绍:
RenderScript是一个框架在高性能运行计算密集型任务> renderscriptTargetApi 18 renderscriptSupportModeEnabled 真正的
其中renderscriptTargetApi的值官方说的是从11到最新的API级别都可以
这样我们等下导包就可以导v8内的了。
<强>模糊背景强>
<强>局部模糊强>
先上一张我们要实现的效果图:
这里可以看到实现的是局部模糊,在图片的正中间有一个TextView, TextView的背景部分做了模糊处理。
<强>先大致说下模糊的主要步骤(完全模糊步骤一样):强>
- <李>
首先取出TextView在ImageView正上方处的那一块背景
李> <李>然后对取出的那一块背景做模糊处理
李> <李>最后把模糊处理后的背景再设为TextView的背景
这样,就可以达到我们图片中的局部模糊效果,具体的过程在代码中有详细的注释。
<强>下面先贴上布局文件:强>
& lt; ? xml version=?.0“,编码=皍tf-8" ?比; & lt;使用 ,xmlns: android=癶ttp://schemas.android.com/apk/res/android" ,android: layout_width=癿atch_parent" ,android: layout_height=癿atch_parent" ,android:填充=?0 dp"比; & lt; FrameLayout android:才能layout_width=?00 dp" android:才能layout_height=?00 dp" android:才能layout_centerInParent=皌rue"比; & lt; ImageView才能 ,,android: id=癅 + id/image" ,,android: layout_width=癿atch_parent" ,,android: layout_height=癿atch_parent" ,,android: scaleType=癱enterCrop" ,,android: src=https://www.yisu.com/zixun/" @drawable/img "/>
<强>再贴上java代码:强>
public class MainActivity extends Activity implements Runnable { ,private static  final String  TAG =,“MainActivity"; ,private ImageView  mImage; ,private TextView 多行文字; ,@Override ,protected void  onCreate (Bundle savedInstanceState), { super.onCreate才能(savedInstanceState); ,,setContentView (R.layout.activity_main); mImage 才能=,(ImageView), findViewById (R.id.image); mText 才能=,(TextView), findViewById (R.id.text);//才能,onCreate()内无法到ImageView的背景,所以需要,post 到消息队列内稍后执行 mImage.post才能(这个); ,} ,@Override ,public void  run (), { 模糊才能(getImageViewBitmap (mImage),多行文字); ,}/* * *,才能取出一个imageView的位图背景 ,*/,public Bitmap  getImageViewBitmap (ImageView imageView), { imageView.setDrawingCacheEnabled才能(真正的);//,才能取出ImageView的位图 Bitmap 才能;Bitmap =, imageView.getDrawingCache ();//,才能拷贝一份位图用作模糊 Bitmap 才能;bitmapCopy =, bitmap.copy (bitmap.getConfig(),,真的); imageView.setDrawingCacheEnabled才能(假); return 才能;bitmapCopy; ,}/* * *,才能模糊的具体实现 ,* *,才能@param inputBitmap 要模糊的,位图 *,才能@param targetView 需要被模糊背景的,视图 ,*/,public void 模糊(Bitmap inputBitmap, View targetView), {//,才能创建一个和目标视图(需要背景被模糊的视图)宽高一样的空的,outputBitmap Bitmap 才能;outputBitmap =, Bitmap.createBitmap ((int), (targetView.getMeasuredWidth ()), ,,,(int), (targetView.getMeasuredHeight ()),, Bitmap.Config.ARGB_8888);//,才能将,outputBitmap 关联在,canvas 上 Canvas 才能;Canvas =, new 画布(outputBitmap);//,才能画布移动到目标,View 在父布局中的位置 canvas.translate才能(-targetView.getLeft (),, -targetView.getTop ()); Paint 才能;Paint =, new 油漆(); paint.setFlags才能(Paint.FILTER_BITMAP_FLAG);//,才能将要模糊的,inputBitmap 绘制到,outputBitmap 上//才能,因为刚才做了,translate 操作,这样就可以裁剪到目标,View 在父布局内的那一块背景到,outputBitmap 上 canvas.drawBitmap才能(inputBitmap, 0, 0,,油漆);//,才能——接下来做模糊,outputBitmap 处理操作- - - - -//,才能创建,渲染脚本 RenderScript 才能;rs =, RenderScript.create(这个); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何在Android中使用RenderScript实现一个毛玻璃模糊效果