android实现桌面移动悬浮窗口实现桌面移动悬浮窗口
现在很多应用都有这样的功能,比如360等安全卫士,手机管家之内的应用。
效果图:
一、实现原理及移动思路一、实现原理及移动思路
调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建
View,这样产生出来的View根据WindowManager.LayoutParams属性不同,效果也就不同了。比如创建系统顶级窗口,实现
悬浮窗口效果!然后通过覆写悬浮View中onTouchEvent方法来改变windowMananager.LayoutParams中x和y的值来实现自由
移动悬浮窗口。
二、示例代码二、示例代码
先看看悬浮View的代码把
package com.example.suspend;
import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.widget.ImageView;
public class MyFloatView extends ImageView {
private float mTouchStartX;
private float mTouchStartY;
private float x;
private float y;
private WindowManager wm = (WindowManager) getContext()
.getApplicationContext().getSystemService("window");
// 此wmParams变量为获取的全局变量,用以保存悬浮窗口的属性
private WindowManager.LayoutParams wmParams = ((MyApplication) getContext()
.getApplicationContext()).getMywmParams();
public MyFloatView(Context context) {
super(context);
}
@Override