Android中实现布局背景模糊化处理的方法

所属分类: 软件编程 / Android 阅读数: 1415
收藏 0 赞 0 分享

在模仿 IOS 密码输入页面的时候发现其背景有模糊处理,于是了解了一下并记录下来,以便使用.在Android 中具体实现方法如下
查考 https://www.jb51.net/article/64781.htm

private void applyBlur() {  
    
  // 获取壁纸管理器  
  WallpaperManager wallpaperManager = WallpaperManager.getInstance(this.getContext());  
  // 获取当前壁纸  
  Drawable wallpaperDrawable = wallpaperManager.getDrawable();  
  // 将Drawable,转成Bitmap  
  Bitmap bmp = ((BitmapDrawable) wallpaperDrawable).getBitmap();  
   
  blur(bmp);  
}  

下面之所以要进行small 和big的处理,是因为仅仅靠ScriptIntrinsicBlur  来处理模式,不能到达更模式的效果,如果需要加深模式效果就需要先把背景图片缩小,在处理完之后再放大.这个可以使用Matrix 来实现,而且这样可以缩短模糊化得时间

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)  
private void blur(Bitmap bkg) {  
  long startMs = System.currentTimeMillis();  
  float radius = 20;  
 
  bkg = small(bkg); 
  Bitmap bitmap = bkg.copy(bkg.getConfig(), true); 
 
  final RenderScript rs = RenderScript.create(this.getContext()); 
  final Allocation input = Allocation.createFromBitmap(rs, bkg, 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); 
 
  bitmap = big(bitmap); 
  setBackground(new BitmapDrawable(getResources(), bitmap));  
  rs.destroy();  
  Log.d("zhangle","blur take away:" + (System.currentTimeMillis() - startMs )+ "ms");  
}  
 
private static Bitmap big(Bitmap bitmap) { 
   Matrix matrix = new Matrix();  
   matrix.postScale(4f,4f); //长和宽放大缩小的比例 
   Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true); 
   return resizeBmp; 
 } 
 
 private static Bitmap small(Bitmap bitmap) { 
   Matrix matrix = new Matrix();  
   matrix.postScale(0.25f,0.25f); //长和宽放大缩小的比例 
   Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true); 
   return resizeBmp; 
} 

更多精彩内容其他人还在看

android byte[] 和short[]转换的方法代码

这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取应用程序大小的方法

这篇文章主要介绍了Android获取应用程序大小的方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取其他包的Context实例代码

这篇文章主要介绍了Android获取其他包的Context实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android放大镜的实现代码

这篇文章主要介绍了Android放大镜的实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android 读取Properties配置文件的小例子

这篇文章主要介绍了Android 读取Properties配置文件的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android通讯录开发之删除功能的实现方法

这篇文章主要介绍了Android通讯录开发之删除功能的实现方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享
查看更多