Java Code Examples for android.view.WindowManager.LayoutParams#FLAG_NOT_FOCUSABLE

The following examples show how to use android.view.WindowManager.LayoutParams#FLAG_NOT_FOCUSABLE . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: WindowManage.java    From QSVideoPlayer with Apache License 2.0 8 votes vote down vote up
public WindowManager.LayoutParams creatParams(int type, FloatParams floatParams) {
    //系统浮窗不能超出边界,更新xy
    int ww = (w - floatParams.w) / 2;
    int hh = (h - floatParams.h) / 2;
    if (Math.abs(floatParams.x) > ww)
        floatParams.x = floatParams.x > 0 ? ww : -ww;
    if (Math.abs(floatParams.y) > hh)
        floatParams.y = floatParams.y > 0 ? hh : -hh;

    LayoutParams smallWindowParams = new LayoutParams();
    smallWindowParams.type = type;
    smallWindowParams.format = PixelFormat.RGBA_8888;
    smallWindowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
            | LayoutParams.FLAG_NOT_FOCUSABLE;
    //smallWindowParams.gravity = Gravity.LEFT | Gravity.TOP;
    smallWindowParams.width = floatParams.w;
    smallWindowParams.height = floatParams.h;
    smallWindowParams.x = floatParams.x;
    smallWindowParams.y = floatParams.y;
    return smallWindowParams;
}
 
Example 2
Source File: HandView.java    From BalloonPerformer with Apache License 2.0 6 votes vote down vote up
/**
 * attach handview to {@link WindowManager}
 *
 * @param y
 */
public void attachToWindow(int x, int y) {
    if (this.getParent() != null) {
        return;
    }
    mLp = new WindowManager.LayoutParams();
    mLp.type = LayoutParams.TYPE_SYSTEM_ALERT;
    mLp.format = PixelFormat.RGBA_8888;
    mLp.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
            | LayoutParams.FLAG_NOT_FOCUSABLE;
    mLp.gravity = Gravity.LEFT | Gravity.TOP;
    mLp.width = WindowManager.LayoutParams.WRAP_CONTENT;
    mLp.height = WindowManager.LayoutParams.WRAP_CONTENT;
    mLp.x = x;
    mOriY = y;
    mLp.y = mOriY;
    mWindowManager.addView(this, mLp);
}
 
Example 3
Source File: StatusBarVolumePanel.java    From Noyze with Apache License 2.0 6 votes vote down vote up
@Override public WindowManager.LayoutParams getWindowLayoutParams() {
	int flags = (LayoutParams.FLAG_NOT_FOCUSABLE		|
                    LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH  |
                    LayoutParams.FLAG_NOT_TOUCH_MODAL      |
                    LayoutParams.FLAG_LAYOUT_INSET_DECOR   |
			     LayoutParams.FLAG_LAYOUT_IN_SCREEN		|
			     LayoutParams.FLAG_SHOW_WHEN_LOCKED	    );
	LayoutParams WPARAMS = new WindowManager.LayoutParams(
		LayoutParams.MATCH_PARENT, mStatusBarHeight, 0, 0,
		LayoutParams.TYPE_SYSTEM_ERROR, flags, PixelFormat.TRANSLUCENT);
	WPARAMS.windowAnimations = android.R.style.Animation_Dialog;
	WPARAMS.packageName = getContext().getPackageName();
	WPARAMS.setTitle(TAG);
       WPARAMS.rotationAnimation = LayoutParams.ROTATION_ANIMATION_JUMPCUT;
	WPARAMS.gravity = (Gravity.FILL_HORIZONTAL | Gravity.TOP);
	WPARAMS.screenBrightness = WPARAMS.buttonBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
	return WPARAMS;
}
 
Example 4
Source File: TestActivity.java    From android-art-res with Apache License 2.0 6 votes vote down vote up
public void onButtonClick(View v) {
    if (v == mCreateWindowButton) {
        mFloatingButton = new Button(this);
        mFloatingButton.setText("click me");
        mLayoutParams = new WindowManager.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0,
                PixelFormat.TRANSPARENT);
        mLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
                | LayoutParams.FLAG_NOT_FOCUSABLE
                | LayoutParams.FLAG_SHOW_WHEN_LOCKED;
        mLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR;
        mLayoutParams.gravity = Gravity.LEFT | Gravity.TOP;
        mLayoutParams.x = 100;
        mLayoutParams.y = 300;
        mFloatingButton.setOnTouchListener(this);
        mWindowManager.addView(mFloatingButton, mLayoutParams);
    }
}
 
Example 5
Source File: StatusBarVolumePanel.java    From Noyze with Apache License 2.0 6 votes vote down vote up
@Override public WindowManager.LayoutParams getWindowLayoutParams() {
	int flags = (LayoutParams.FLAG_NOT_FOCUSABLE		|
                    LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH  |
                    LayoutParams.FLAG_NOT_TOUCH_MODAL      |
                    LayoutParams.FLAG_LAYOUT_INSET_DECOR   |
			     LayoutParams.FLAG_LAYOUT_IN_SCREEN		|
			     LayoutParams.FLAG_SHOW_WHEN_LOCKED	    );
	LayoutParams WPARAMS = new WindowManager.LayoutParams(
		LayoutParams.MATCH_PARENT, mStatusBarHeight, 0, 0,
		LayoutParams.TYPE_SYSTEM_ERROR, flags, PixelFormat.TRANSLUCENT);
	WPARAMS.windowAnimations = android.R.style.Animation_Dialog;
	WPARAMS.packageName = getContext().getPackageName();
	WPARAMS.setTitle(TAG);
       WPARAMS.rotationAnimation = LayoutParams.ROTATION_ANIMATION_JUMPCUT;
	WPARAMS.gravity = (Gravity.FILL_HORIZONTAL | Gravity.TOP);
	WPARAMS.screenBrightness = WPARAMS.buttonBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
	return WPARAMS;
}
 
Example 6
Source File: ZoomButtonsController.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
/**
 * Sets whether the zoom controls should be focusable. If the controls are
 * focusable, then trackball and arrow key interactions are possible.
 * Otherwise, only touch interactions are possible.
 *
 * @param focusable Whether the zoom controls should be focusable.
 */
public void setFocusable(boolean focusable) {
    int oldFlags = mContainerLayoutParams.flags;
    if (focusable) {
        mContainerLayoutParams.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE;
    } else {
        mContainerLayoutParams.flags |= LayoutParams.FLAG_NOT_FOCUSABLE;
    }

    if ((mContainerLayoutParams.flags != oldFlags) && mIsVisible) {
        mWindowManager.updateViewLayout(mContainer, mContainerLayoutParams);
    }
}
 
Example 7
Source File: Takt.java    From styT with Apache License 2.0 5 votes vote down vote up
private Program prepare(Application application) {
    metronome = new Metronome();
    params = new LayoutParams();
    params.width = LayoutParams.WRAP_CONTENT;
    params.height = LayoutParams.WRAP_CONTENT;
    // if (isOverlayApiDeprecated()) {
    // params.type = LayoutParams.TYPE_APPLICATION_OVERLAY;
    // } else {
    params.type = LayoutParams.TYPE_TOAST;
    //}
    params.flags = LayoutParams.FLAG_KEEP_SCREEN_ON | LayoutParams.FLAG_NOT_FOCUSABLE
            | LayoutParams.FLAG_NOT_TOUCH_MODAL;
    params.format = PixelFormat.TRANSLUCENT;
    params.gravity = Seat.BOTTOM_RIGHT.getGravity();
    params.x = 10;

    app = application;
    wm = WindowManager.class.cast(application.getSystemService(Context.WINDOW_SERVICE));
    LayoutInflater inflater = LayoutInflater.from(app);
    stageView = inflater.inflate(R.layout.stage, new RelativeLayout(app));
    fpsText = stageView.findViewById(R.id.takt_fps);

    listener(new Audience() {
        @Override
        public void heartbeat(double fps) {
            if (fpsText != null) {
                fpsText.setText(decimal.format(fps));
            }
        }
    });

    return this;
}
 
Example 8
Source File: Takt.java    From stynico with MIT License 5 votes vote down vote up
private Program prepare(Application application) {
    metronome = new Metronome();
    params = new LayoutParams();
    params.width = LayoutParams.WRAP_CONTENT;
    params.height = LayoutParams.WRAP_CONTENT;
    // if (isOverlayApiDeprecated()) {
    // params.type = LayoutParams.TYPE_APPLICATION_OVERLAY;
    // } else {
    params.type = LayoutParams.TYPE_TOAST;
    //}
    params.flags = LayoutParams.FLAG_KEEP_SCREEN_ON | LayoutParams.FLAG_NOT_FOCUSABLE
            | LayoutParams.FLAG_NOT_TOUCH_MODAL;
    params.format = PixelFormat.TRANSLUCENT;
    params.gravity = Seat.BOTTOM_RIGHT.getGravity();
    params.x = 10;

    app = application;
    wm = WindowManager.class.cast(application.getSystemService(Context.WINDOW_SERVICE));
    LayoutInflater inflater = LayoutInflater.from(app);
    stageView = inflater.inflate(R.layout.stage, new RelativeLayout(app));
    fpsText = (TextView) stageView.findViewById(R.id.takt_fps);

    listener(new Audience() {
        @Override
        public void heartbeat(double fps) {
            if (fpsText != null) {
                fpsText.setText(decimal.format(fps));
            }
        }
    });

    return this;
}
 
Example 9
Source File: Takt.java    From Takt with Apache License 2.0 5 votes vote down vote up
private Program prepare(Application application) {
  metronome = new Metronome();
  params = new LayoutParams();
  params.width = LayoutParams.WRAP_CONTENT;
  params.height = LayoutParams.WRAP_CONTENT;
  application.registerActivityLifecycleCallbacks(new LifecycleListener(this));

  if (isOverlayApiDeprecated()) {
    params.type = LayoutParams.TYPE_APPLICATION_OVERLAY;
  } else {
    params.type = LayoutParams.TYPE_TOAST;
  }
  params.flags = LayoutParams.FLAG_KEEP_SCREEN_ON | LayoutParams.FLAG_NOT_FOCUSABLE
      | LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_TOUCHABLE;
  params.format = PixelFormat.TRANSLUCENT;
  params.gravity = Seat.BOTTOM_RIGHT.getGravity();
  params.x = 10;

  app = application;
  wm = WindowManager.class.cast(application.getSystemService(Context.WINDOW_SERVICE));
  LayoutInflater inflater = LayoutInflater.from(app);
  stageView = inflater.inflate(R.layout.stage, new RelativeLayout(app));
  fpsText = stageView.findViewById(R.id.takt_fps);

  listener(new Audience() {
    @Override public void heartbeat(double fps) {
      if (fpsText != null) {
        fpsText.setText(decimal.format(fps));
      }
    }
  });

  return this;
}
 
Example 10
Source File: PopupWindow.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
/**
 * Disposes of the popup window. This method can be invoked only after
 * {@link #showAsDropDown(android.view.View)} has been executed. Failing
 * that, calling this method will have no effect.
 *
 * @see #showAsDropDown(android.view.View)
 */
public void dismiss() {
    if (!isShowing() || isTransitioningToDismiss()) {
        return;
    }

    final PopupDecorView decorView = mDecorView;
    final View contentView = mContentView;

    final ViewGroup contentHolder;
    final ViewParent contentParent = contentView.getParent();
    if (contentParent instanceof ViewGroup) {
        contentHolder = ((ViewGroup) contentParent);
    } else {
        contentHolder = null;
    }

    // Ensure any ongoing or pending transitions are canceled.
    decorView.cancelTransitions();

    mIsShowing = false;
    mIsTransitioningToDismiss = true;

    // This method may be called as part of window detachment, in which
    // case the anchor view (and its root) will still return true from
    // isAttachedToWindow() during execution of this method; however, we
    // can expect the OnAttachStateChangeListener to have been called prior
    // to executing this method, so we can rely on that instead.
    final Transition exitTransition = mExitTransition;
    if (exitTransition != null && decorView.isLaidOut()
            && (mIsAnchorRootAttached || mAnchorRoot == null)) {
        // The decor view is non-interactive and non-IME-focusable during exit transitions.
        final LayoutParams p = (LayoutParams) decorView.getLayoutParams();
        p.flags |= LayoutParams.FLAG_NOT_TOUCHABLE;
        p.flags |= LayoutParams.FLAG_NOT_FOCUSABLE;
        p.flags &= ~LayoutParams.FLAG_ALT_FOCUSABLE_IM;
        mWindowManager.updateViewLayout(decorView, p);

        final View anchorRoot = mAnchorRoot != null ? mAnchorRoot.get() : null;
        final Rect epicenter = getTransitionEpicenter();

        // Once we start dismissing the decor view, all state (including
        // the anchor root) needs to be moved to the decor view since we
        // may open another popup while it's busy exiting.
        decorView.startExitTransition(exitTransition, anchorRoot, epicenter,
                new TransitionListenerAdapter() {
                    @Override
                    public void onTransitionEnd(Transition transition) {
                        dismissImmediate(decorView, contentHolder, contentView);
                    }
                });
    } else {
        dismissImmediate(decorView, contentHolder, contentView);
    }

    // Clears the anchor view.
    detachFromAnchor();

    if (mOnDismissListener != null) {
        mOnDismissListener.onDismiss();
    }
}
 
Example 11
Source File: FunFloatingTool.java    From RePlugin-GameSdk with Apache License 2.0 4 votes vote down vote up
/**
 * 要显示在窗口最前面的方法
 * 
 * @param context
 *            调用对象Context getApplicationContext()
 * @param window
 *            调用对象 Window getWindow()
 * @param floatingViewObj
 *            要显示的浮动对象 View
 */
public static void show(Context context, View floatingViewObj) {

	mFloatingViewObj = floatingViewObj;

	view_obj = mFloatingViewObj;
	Rect frame = new Rect();
	// 这一句是关键,让其在top 层显示
	// getWindow()
	// window.getDecorView().getWindowVisibleDisplayFrame(frame);
	TOOL_BAR_HIGH = frame.top;

	wm = (WindowManager) context// getApplicationContext()
			.getSystemService(Context.WINDOW_SERVICE);

	params.type = WindowManager.LayoutParams.TYPE_APPLICATION;// 2;
	// params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
	// | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
	// params.type = 2003;//WindowManager.LayoutParams.TYPE_PHONE;
	params.format = -2;
	params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
			| LayoutParams.FLAG_NOT_FOCUSABLE;

	// 设置悬浮窗口长宽数据
	params.width = WindowManager.LayoutParams.WRAP_CONTENT;
	params.height = HWUtils.dip2px(context, 60);
	// 设定透明度
	params.alpha = 80;
	// 设定内部文字对齐方式
	params.gravity = Gravity.LEFT | Gravity.TOP;

	screenWidth = wm.getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px)
	screenHeight = wm.getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800px)
	// 以屏幕左上角为原点,设置x、y初始值ֵ
	// params.x = (int) (screenWidth - params.width);
	String postions = HWPreferences.getData(context, "HW_postions");
	String mY = HWPreferences.getData(context, "HW_currentY");
	if (null != postions && null != mY && 0 < mY.length()) {
		if (Boolean.valueOf(postions)) {
			params.x = params.width;
		} else {
			params.x = (int) (screenWidth - params.width);
		}
		isLeftPosition = Boolean.valueOf(postions);
		params.y = Integer.valueOf(mY) + 60;

	} else {
		params.x = params.width;
		params.y = ((screenHeight - params.height) / 2) + 60;

	}
	// params.y = (int) y;
	// tv = new MyTextView(TopFrame.this);

	wm.addView(floatingViewObj, params);
	wm.updateViewLayout(mFloatingViewObj, params);
	isShow = true;
	mIsShow = true; // 定时器检测浮标是否已经显示出来的标志

}
 
Example 12
Source File: FloatWindowService.java    From styT with Apache License 2.0 4 votes vote down vote up
private void createFloatView() {
    wmParams = new WindowManager.LayoutParams();
    mWindowManager = (WindowManager) getApplication().getSystemService(android.app.Application.WINDOW_SERVICE);
    wmParams.type = LayoutParams.TYPE_SYSTEM_ALERT;// 设置window
    // type为TYPE_SYSTEM_ALERT
    wmParams.format = PixelFormat.RGBA_8888;// 设置图片格式,效果为背景透明
    wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;// 设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)
    wmParams.gravity = Gravity.LEFT | Gravity.TOP;// 默认位置:左上角
    wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
    wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
    wmParams.x = (WidgetUtils.getScreenWidth(getApplicationContext()) - wmParams.width) / 2;// 设置x、y初始值,相对于gravity
    wmParams.y = 10;
    // 获取浮动窗口视图所在布局
    LayoutInflater inflater = LayoutInflater.from(getApplication());
    mFloatLayout = (LinearLayout) inflater.inflate(R.layout.float_layout, null);
    mWindowManager.addView(mFloatLayout, wmParams);// 添加mFloatLayout
    mFloatView = mFloatLayout.findViewById(R.id.float_id);
    mFloatLayout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    // 设置监听浮动窗口的触摸移动
    mFloatView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标
            wmParams.x = (int) event.getRawX() - mFloatView.getMeasuredWidth() / 2;
            // Log.i(TAG, "RawX" + event.getRawX());
            // Log.i(TAG, "X" + event.getX());
            wmParams.y = (int) event.getRawY() - mFloatView.getMeasuredHeight() / 2 - 25;// 减25为状态栏的高度
            // Log.i(TAG, "RawY" + event.getRawY());
            // Log.i(TAG, "Y" + event.getY());
            mWindowManager.updateViewLayout(mFloatLayout, wmParams);// 刷新
            return false; // 此处必须返回false,否则OnClickListener获取不到监听
        }
    });
    mFloatView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

        }
    });
}
 
Example 13
Source File: FaceLockService.java    From android-picturepassword with MIT License 4 votes vote down vote up
public FaceLockService()
{
	binder = new Stub()
	{
		@Override
		public void startUi( IBinder windowToken, int x, int y, int w, int h, boolean useLiveliness ) throws RemoteException
		{
			DisplayMetrics metrics = new DisplayMetrics();
			mWindowManager.getDefaultDisplay().getRealMetrics( metrics );
			
			Log.d( "PicturePassword", "Appearing at " + ( y + h ) );
			if ( y + h > metrics.heightPixels ) return;

			LayoutParams p = new LayoutParams( LayoutParams.TYPE_APPLICATION_PANEL );
			p.flags = LayoutParams.FLAG_HARDWARE_ACCELERATED | LayoutParams.FLAG_NOT_FOCUSABLE;
			p.token = windowToken;
			p.x = x;
			p.y = y;
			p.width = w;
			p.height = h;
			p.gravity = 8388659; // TODO: decompose, i have no idea what this means
			
			FaceLockService.this.mLayoutParams = p;
			FaceLockService.this.mHandler.obtainMessage( MSG_SERVICE_CONNECTED, p ).sendToTarget();
			
			if ( PicturePasswordUtils.getLockedOut( FaceLockService.this ) )
			{
				lockOut( false );
			}
		}

		@Override
		public void stopUi() throws RemoteException
		{
			FaceLockService.this.mHandler.sendEmptyMessage( MSG_SERVICE_DISCONNECTED );
		}

		@Override
		public void registerCallback( IFaceLockCallback callback ) throws RemoteException
		{
			FaceLockService.this.mCallback = callback;
		}

		@Override
		public void unregisterCallback( IFaceLockCallback callback ) throws RemoteException
		{
			FaceLockService.this.mCallback = null;
		}
		
		@Override
		public Bitmap getImage() throws RemoteException
		{
			return FaceLockService.this.mBitmap;
		}
		
		@Override
		public boolean onTransact( int code, Parcel data, Parcel reply, int flags ) throws RemoteException
		{
			if ( code == 0x4747 )
			{
				reply.writeValue( getImage() );
				return true;
			}

			return super.onTransact( code, data, reply, flags );
		}
	};
}