先来看一下悬浮窗口的效果
界面虽然丑了点,但是悬浮窗口该有的功能都有,可以看到屏幕的右方有一只小企鹅,小企鹅就是悬浮窗口,可以拖动企鹅四处移动,如果不将其关闭,即使活动结束它也不会消失。
实现悬浮窗口应该准备的操作:
1、获取窗口管理WindowManager
WindowManager windowManager=(WindowManager)getApplication().getSystemService(Context.WINDOW_SERVICE);
2、获取能够设置窗口的Param
WindowManager.LayoutParams params=new WindowManager.LayoutParams();
3、获取要加载进来的布局
LayoutInflater inflater=LayoutInflater.from(getApplication());
LinearLayout linearLayout= (LinearLayout) inflater.inflate(R.layout.progress_layout,null);
4、设置悬浮窗口的宽高
params.width=WindowManager.LayoutParams.MATCH_PARENT;
params.height=WindowManager.LayoutParams.MATCH_PARENT;
注:这里的宽高可以自己任意设定,只要是int型的数据都可以
5、设置悬浮窗口开始加载进来的位置
params.gravity= Gravity.CENTER_VERTICAL|Gravity.RIGHT;
6、不抢占焦距点
params.flags= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
如果不设置这个,一旦有悬浮窗口在当前的活动时,活动里面的所有控件都失去了焦点,不能操作
7、只让图片显示出来
params.format=1;
注:只要写了这句话,就不能将已经写好的布局加载进来,必须自定义一个空的,在通过程序动态的去设置
8、设置悬浮窗口的透明度
params.alpha=0.5f; //0为全透明,1为不透明
9、实现悬浮窗口
windowManager.addView(linearLayout,params);
10、操作完了过后记得将悬浮窗口移除
windowManager.removeView(linearLayout);//可以在活动结束时里面调用等
注:在使用悬浮窗口之前一定要添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>