Android 利用 WindowManager 弹出透明窗
(2013-06-03 14:41:33)
标签:
it |
public static WindowManager.LayoutParams wmParams;
private static WindowManager mWindowManager;
private static View myFV;//弹出窗的View
public void open(){
myFV = new MyView().initViews();
// 以下都是WindowManager.LayoutParams的相关属性 具体用途可参考SDK文档
// 根据电话状态调整透明窗位置
wmParams.type = LayoutParams.TYPE_PHONE;
// 设置图片格式,效果为背景透明
wmParams.format =
PixelFormat.RGBA_8888;
// 设置Window flag
wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL |
LayoutParams.FLAG_NOT_FOCUSABLE |
LayoutParams.FLAG_LAYOUT_NO_LIMITS;
// 调整悬浮窗口
wmParams.gravity = Gravity.CENTER_HORIZONTAL |
Gravity.CENTER_VERTICAL;
//调整窗口高度
wmParams.height = 720;
//强制竖屏
wmParams.screenOrientation =
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
// 使其可移动
myFV.setOnTouchListener(new OnTouchListener() {
int lastX, lastY;
int paramX, paramY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
paramX = wmParams.x;
paramY = wmParams.y;
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY;
wmParams.x = paramX + dx;
wmParams.y = paramY + dy;
// 更新悬浮窗位置
mWindowManager.updateViewLayout(v, wmParams);
Debug.d("zhangran_mail", "onTouch() wmParams.x=" + wmParams.x
+ " wmParams.y=" + wmParams.y);
break;
}
return false;
}
});
mWindowManager.addView(myFV, wmParams);//把View 加到windowManager
中
}