Android之悬浮窗口的使用

先来看一下悬浮窗口的效果

界面虽然丑了点,但是悬浮窗口该有的功能都有,可以看到屏幕的右方有一只小企鹅,小企鹅就是悬浮窗口,可以拖动企鹅四处移动,如果不将其关闭,即使活动结束它也不会消失。

实现悬浮窗口应该准备的操作:

     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"/>


原文地址:https://www.cnblogs.com/xhf-wonder/p/6767961.html