第8章 理解Window和WindowManager

WindowManager
通过WindowManager添加Window(悬浮窗)
  1. mFloatingButton = new Button(this);
  2. mFloatingButton.setText("click me");
  3. mLayoutParams = new WindowManager.LayoutParams(
  4. LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0,
  5. PixelFormat.TRANSPARENT);
  6. mLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
  7. | LayoutParams.FLAG_NOT_FOCUSABLE
  8. | LayoutParams.FLAG_SHOW_WHEN_LOCKED;
  9. mLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR;
  10. mLayoutParams.gravity = Gravity.LEFT | Gravity.TOP;
  11. mLayoutParams.x = 100;
  12. mLayoutParams.y = 300;
  13. mFloatingButton.setOnTouchListener(this);
  14. mWindowManager.addView(mFloatingButton, mLayoutParams);
flag:
FLAG_NOT_FOCUSABLE:Window不需要获取焦点,也不需要接收各种输入事件;
FLAG_NOT_TOUCH_MODEL:系统会将当前Window区域以为的单击事件传递给底层Window,当前Window内的单击事件则自己处理;
FLAG_SHOW_WHEN_LOCKED:Window显示在锁屏的界面上;
type:
Window的三种类型,应用Window(对应一个Activity),子Window(不能单独存在,需要附属在特定的父Window中),系统Window。
Window有层级概念,应用Window层级范围(1~99),子Window层级范围(1000~1999),系统Window层级范围(2000~2999);

常见的三大操作,添加View、更新View、删除View。






posted @ 2016-02-24 14:44  咖啡馆的水果拼盘  阅读(177)  评论(0编辑  收藏  举报