【问题标题】:Android WindowManager fullscreenAndroid WindowManager 全屏
【发布时间】:2013-12-29 16:42:55
【问题描述】:

这是我的代码:

  windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
  LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
  menubuttonClosed = li.inflate(R.layout.menu_button, null);
  menubutton = (ImageButton) menubuttonClosed.findViewById(R.id.menubutton);
  params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.FILL_PARENT,
            WindowManager.LayoutParams.FILL_PARENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
  params.x = 0;
  params.y = 0;

  menubutton.setOnTouchListener(new View.OnTouchListener() {
  @Override
  public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                return true;
            case MotionEvent.ACTION_UP:
                Log.i("midoka", "click");
                return true;
            case MotionEvent.ACTION_MOVE:
                return true;
    }
    return false;
  }
  });
  windowManager.addView(menubuttonClosed, params);   

我想在窗口管理器中添加一个带有按钮的布局,按钮应该响应事件(点击,触摸..),但是布局必须不断向后面的窗口发送触摸事件,有没有办法做到这一点?

【问题讨论】:

    标签: java android android-windowmanager


    【解决方案1】:

    您应该使用浮动视图。例如,要显示一个上边距为 3dp,右边距为 40dp 的方形视图(wm 是 WindowManager 实例):

    private void addMyView(int height) {
    
                int marginTop = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3, getResources().getDisplayMetrics());
                int marginRight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
                try {
                    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                            width, height,marginRight,marginTop,
                            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
                            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                            PixelFormat.TRANSLUCENT);
                    params.gravity = Gravity.RIGHT | Gravity.TOP;
    
                    wm.addView(view, params);
                }catch(Exception e){
    
                }
    
    }
    

    编辑: 要删除视图,您可以调用:

    wm.removeViewImmediate(view);
    

    编辑: 不要忘记许可:

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多