Android 为应用增加可移动的悬浮窗口
2016-03-08 17:53
441 查看
需求描述:
在使用手机客户端浏览内嵌网页的时候,界面出现一个悬浮的刷新按钮,点击网页重新加载。
布局:
[html] viewplain copy
<?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.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.
就是说设置了这个属性之后,这个窗口会在所以的界面之上,但是在状态栏的下面。在多用户系统中,所有用户的窗口上都会显示。
定义拖动和点击事件:
[java] viewplain copy
mFloatView.setOnTouchListener(new OnTouchListener() {
@Override
public 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() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
web.reload();
}
});
别忘了权限声明:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
效果图:
相关文章推荐
- android缓存数据到本地
- Android自定义View控件
- Android 判断数据库中是否存在某个表
- Android 6.0 运行时权限处理完全解析
- Android SDKManger 更新设置
- android开源框架
- Android Binder机制 (1~12)
- Android在线中文API
- 奇葩的Android Bug: Unable to start service Intent
- Android自动清理 无用 多余 未引用 未关联资源工具
- Android Binder机制(三) ServiceManager守护进程
- Android 开发者的 RxJava 详解
- Android Design支持库TabLayout 来实现tab效果
- Android Binder机制(一) Binder的设计和框架
- Android Cordova 插件开发之插件开发过程中遇到的问题
- Android Checkbox详解
- android里R.layout.的问题
- Android之ViewTreeObserver
- android Json解析详解(详细代码)
- android studio 打包混淆jar