效果图如下:
代码如下:
public class BlurWindow { private Window mWindow; private WindowManager mWindowManager; private View mEmptyView; public static final int START_BLUR = 0; public static final int STOP_BLUR = 1; private static final int EMPTY_SIZE = 0; private Handler mHandler = new Handler() { private boolean isAdd = false; public void handleMessage(android.os.Message msg) { switch (msg.what) { case START_BLUR: if (!isAdd) { WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.flags |= (LayoutParams.FLAG_BLUR_BEHIND | LayoutParams.FLAG_NOT_FOCUSABLE); lp.format = PixelFormat.TRANSPARENT; lp.width = EMPTY_SIZE; lp.height = EMPTY_SIZE; lp.type = LayoutParams.TYPE_APPLICATION; mWindowManager.addView(mEmptyView, lp); isAdd = true; } break; case STOP_BLUR: mWindowManager.removeView(mEmptyView); isAdd = false; break; default: break; } }; }; public BlurWindow(Activity activity) { mWindow = activity.getWindow(); mWindowManager = mWindow.getWindowManager(); mEmptyView = new View(activity); } public void startBlur() { mHandler.sendEmptyMessage(START_BLUR); } public void stopBLur() { mHandler.sendEmptyMessage(STOP_BLUR); } } //sleep 1.5s 然后模糊 再sleep2.0s 再去除模糊 public class BlurWindowActivity extends Activity { /** Called when the activity is first created. */ BlurWindow window; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); window = new BlurWindow(this); //startActivity(new Intent("com.test")); new Thread() { public void run() { try { Thread.sleep(1500); } catch (InterruptedException e) { e.printStackTrace(); } window.startBlur(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } window.stopBLur(); }; }.start(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } }
由于在activity中设置FLAG_BLUR_BEHIND无法立即生效,所以采用了addView这种方式促使它生效。FLAG_NOT_FOCUSABLE这个flag非常关键,如果不设置,将导致新加入的view获取了焦点,但无法控制包括返回按钮都不能用,需要你重新对window设置callback,参见Dialog的原代码。
lp.width = EMPTY_SIZE; lp.height = EMPTY_SIZE;
高度和宽度如果不设置为0,那就设置一下它的alpha为0或者fomat为TRANSPARENT,否则将会导致新加入的空的view充满全屏幕而且是黑的。
另外,需要注意的是,这个控制是和某个activity的window强相关的,所以只能用于某个actvity。
如果有更好的方法或者能对以上代码进行优化,欢迎大家共享出来。
如果这个代码是在activity生命周期中执行而不是延缓执行,比如在onCreate中进acitivty时会黑一下,不知道这个是怎么回事。
发表评论
-
ScrollView嵌套Edittext
2015-04-08 18:26 786scrollview 中加入多个控件如 edittext 后会 ... -
android 布局式跑马灯,非TextView
2015-04-07 10:51 448如题,简单的实现了跑马灯效果,把Scroll.java放入an ... -
Android圆角图片
2015-03-11 17:44 646my_wane_shape.xml 快速圆角背景边框实现, ... -
SQLite多线程读写实践及常见问题总结
2015-02-13 17:06 897基本操作的部分,大家都很熟悉了,这里根据个人切身经验,总结了一 ... -
android加速度感应
2015-01-19 10:25 14321.android测量数据 (1)android设备坐标系 ... -
MatrixCursor的使用
2015-01-19 09:49 1013ContentProvider对外共享数据的时候的query( ... -
Android 获取控件的宽高高级用法(MeasureSpec)
2015-01-15 14:23 937一个MeasureSpec封装了父 ... -
Android_GridView_GridView概述及实现水平滑动
2015-01-14 17:14 11161.GridView简介 GridView是ViewGroup ... -
Android MMS,SMS之常用Uri
2014-09-19 16:32 1289Android MMS,SMS之常用Uri Android ... -
android短彩信查询以及MMS表结构
2014-09-19 16:31 2102android短信的数据库的Uri是不公开的, 读取起来时灰常 ... -
使用Android自带DownloadManager下载文件
2014-08-19 11:04 733SDK在API Level 9中加入了DownloadMan ... -
android textview里链接点击事件,增加图片
2014-08-07 16:45 1100Android系统默认给TextView插入图片提供了三种方 ... -
android Home事件汇总
2014-07-18 11:30 963方法一:android 4.0以后无法通过更改页面的类型来 ... -
Android风格与主题(style and theme)
2014-07-16 16:35 637Android xml风格和主题文 ... -
Android中播放声音的两种方法
2014-05-30 15:09 607在Android中,音频、视 ... -
android 杀进程方法
2014-05-26 17:43 971关闭应用的方法: 1.System.exit(0); ... -
android service 生命周期
2014-04-21 16:16 736有了 Service 类我们如何启动他呢,有两种方法: ... -
解决ADB端口被占用的问题
2014-04-21 16:14 781究其源就是adb server没启动 经过分析整理如下: ... -
输入法隐藏打开
2013-12-23 14:24 763首次进入activity,如果有个edittex ... -
google经纬度互转
2013-07-11 16:34 894https://developers.google.com/ ...
相关推荐
android Activity间切换动画效果演示源码 模糊 水波纹 折叠
android实现高斯模糊(也叫毛玻璃)效果
Android高级应用源码-Activity切换动画--模糊、水波纹、折叠效果.zip
主要为大家详细介绍了android dialog背景模糊化效果的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
一个popwindow,在弹出的时候背景是原界面的截图加高斯模糊效果: 先给出popwindow的布局文件 <?xml version=1.0 encoding=utf-8?> <FrameLayout xmlns:android=...
源码参考,欢迎下载
史上最全的Android图片滤镜 可自定义任意效果滤镜 &搜索关键字变红,变颜色,指定字段变色 &仿ios给activity背景设置模糊度,(只需要一行代码简单集成)安卓模糊背景,半透明背景,任意透明度背景
Activity随手势滑动退出,及模糊Dialog(类似于IOS的效果) [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
目标效果: 第二张为点击第一个按钮拍照后显示的,比较模糊,第三章为点击第二个按钮拍照后显示的,比较清楚。 1.activity_main.xml页面设置布局。 activity_main.xml页面: <RelativeLayout xmlns:android=...
Android为透明效果提供了内置的Theme: android:style/Theme.Translucent,只需要把当前的activity的theme设置为这个Theme就可以达到完全透明的效果。 如果要半透明的话,可以增加一个继承该Theme的style即可,实现...
类似微博的新建效果,可以用在dialog或者activity等所有窗口的效果,会隐约显示窗口下面一层的样子和颜色,没用截图没用高斯模糊不耗性能
简介同时兼容support和androidx链式调用支持自由扩展实现几种常用效果Dialog/BottomSheet效果占用区域不会超过当前Activity避免导航栏遮挡支持自定义大小和显示位置支持自定义数据绑定支持自定义进出场动画支持...
整体设计遵循 Material Design 规范,实现了多种应用常见的效果。包括不局限于: 沉浸式状态栏 有趣的加载动画 滑动关闭Activity 多主题切换 瀑布流、线性、网格布局动态切换 动态加载流式布局 下拉刷新、上拉加载...
id="@ id/banner_image" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:layout_marginLeft="4dp" android:layout_marginRight="4dp">效果如下...
要实现的是浮动状态栏效果,通过在Activity的onCreate方法中调用这个方法,然后就可以让整个布局浮现在整个手机屏幕之下了,这是我觉着最简单的一种方法了。 public static void alphaTask(Activity context) { ...
所以效率就很重要, 下面是我对activity视图bitmap的处理:当用户点下按钮时,我们需要立刻就将模糊后的图片显示出来, 下面是我的模糊图片代码:android里面的高斯模糊我大概总结了一下 基本有三种, 优缺点都有, 我用的...
简单滤镜(马赛克、黑白、色彩过滤、高斯、模糊、模糊等等20多种)、动画、(水印、画面多重播放等)。 帧图 视频第一帧、视频帧截图功能,视频生成gif功能。 播放 列表播放、列表连续播放、重力旋转与手动旋转、...