安卓可移动的悬浮窗口的使用
来源:互联网 发布:java异步调用方法 编辑:程序博客网 时间:2024/05/21 11:06
需求描述:
在使用手机客户端浏览内嵌网页的时候,界面出现一个悬浮的刷新按钮,点击网页重新加载。定义窗口布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/float_fresh" android:padding="5dp" android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/icon_fresh" android:background="@drawable/bg_floatbutton"/></LinearLayout>
设置窗口类型在所有窗口之上:
//获取LayoutParams对象 wmParams = new WindowManager.LayoutParams(); //获取的是LocalWindowManager对象 wmParams.type = LayoutParams.TYPE_PHONE; wmParams.format = PixelFormat.RGBA_8888;//背景透明 wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;//如果没有这句话的话,在生成悬浮窗口后,悬浮窗口后的界面上东西都不能点。这句话的目的是让悬浮窗口失去焦点。
这里说一下这个LayoutParams.TYPE_PHONE。
我们看一下官方文档说明:
These are non-application windows providing user interaction with the phone (in particular incoming calls). These windows are normally placed above all applications, but behind the status bar. In multiuser systems shows on all users' windows.
就是说设置了这个属性之后,这个窗口会在所以的界面之上,但是在状态栏的下面。在多用户系统中,所有用户的窗口上都会显示。
定义拖动和点击事件:
mFloatView.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stub wmParams.x = sWidth - (int) event.getRawX() - mFloatLayout.getMeasuredWidth() / 2; wmParams.y = sHeight - (int) event.getRawY() - mFloatLayout.getMeasuredHeight() / 2; if(wmParams.y > sHeight - titleHeight){ return true; } //刷新 mWindowManager.updateViewLayout(mFloatLayout, wmParams); return false;}}); mFloatView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubweb.reload();}});
别忘了权限声明:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />效果图:
0 0
- 安卓可移动的悬浮窗口的使用
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- 通过WindowsManager实现移动的悬浮窗口
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- Android中可自由移动悬浮窗口的Demo
- Android中可自由移动悬浮窗口的Demo
- Android中可自由移动悬浮窗口的实现
- Android中可自由移动悬浮窗口的实现
- Android中可自由移动悬浮窗口的实现
- Android 为应用增加可移动的悬浮窗口
- Android 为应用增加可移动的悬浮窗口
- Android中可自由移动悬浮窗口的Demo
- 悬浮窗口的学习
- 类似迅雷的悬浮窗口
- CDialogBar窗口的悬浮设置
- Silverlight 非模态的悬浮窗口
- 永久取消OE在打开100次后提示压缩邮件的方法
- 数学建模学习笔记(八大常见建模问题总结)
- Mecanim动画系统
- Android 蓝牙4.0 BLE 理解
- Linux
- 安卓可移动的悬浮窗口的使用
- Spring动态多数据源实例Demo
- JDK里的设计模式
- 中兴GWH-11 ZXV10 H108B的AD路由器获取超级用户密码
- JAVA正则表达式 Pattern和Matcher
- Spring Bean中的lazy-init
- IOS之字典总结
- 左划菜单SlidingMenu
- GitHub中"watch" "star" "fork"