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

查考 http://www.cnblogs.com/lipeil/p/3997992.html

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;}

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. 对于Android的Activity启动模式的一些总结和理解
  3. android 布局背景模糊化处理
  4. Android中设计模式无处不在之单例模式
  5. Android技术栈总结
  6. Android(安卓)Studio 模拟器 adb shell 进入 root 调试模式
  7. Android(安卓)DES加密的CBC模式加密解密和ECB模式加密解密
  8. Android(安卓)开发艺术探索(第一章-Activity 的生命周期和启动模
  9. Android之装饰者模式

随机推荐

  1. Android(安卓)定时任务
  2. ubuntu 10.04 Android(安卓)编译环境搭建
  3. composer、接口与抽象类学习小结
  4. Android的数据存储
  5. [读书笔记]intent.putExtra的使用与原理
  6. Android如何检测输入法键盘是否显示
  7. Dagger2 in Android(四).android 扩展库
  8. Android的framework层音量控制原理分析--
  9. Android(安卓)5.1 去掉首次进入沉浸模式
  10. Android之菜单总结