先來看一下懸浮窗口的效果
界面雖然丑了點,但是懸浮窗口該有的功能都有,可以看到屏幕的右方有一只小企鵝,小企鵝就是懸浮窗口,可以拖動企鵝四處移動,如果不將其關閉,即使活動結束它也不會消失。
實現懸浮窗口應該准備的操作:
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"/>