我有一些用于创建Android Java应用程序的代码,我目前正在尝试在屏幕上显示一个包含一些文本的按钮,我不需要该按钮进行交互,只需要按住即可文字,
我目前正在使用https://gist.github.com/bjoernQ/6975256的演示代码来工作,因此可以使用某些功能,例如能够将按钮移动到我希望的固定位置。
一切正常,但是与背景进行交互时遇到问题,我无法使用任何底层屏幕,只能与顶部和底部的状态栏和快捷方式栏进行交互,
非常感谢您的帮助
@Override
public void onCreate() {
super.onCreate();
int LAYOUT_FLAG;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LAYOUT_FLAG = LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
LAYOUT_FLAG = LayoutParams.TYPE_PHONE;
}
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
mOverlayView = new Button(this);
mOverlayView.setText("test");
mOverlayView.setOnTouchListener(this);
mOverlayView.setBackgroundColor(Color.WHITE);
mOverlayView.setOnClickListener(this);
final LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
LAYOUT_FLAG,
LayoutParams.FLAG_NOT_FOCUSABLE |
LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.LEFT | Gravity.TOP;
params.x = 0;
params.y = 0;
mWindowManager.addView(mOverlayView, params);
topLeftView = new View(this);
LayoutParams topLeftParams = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
LAYOUT_FLAG,
LayoutParams.FLAG_NOT_FOCUSABLE |
LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
topLeftParams.gravity = Gravity.LEFT | Gravity.TOP;
topLeftParams.x = 0;
topLeftParams.y = 0;
topLeftParams.width = 0;
topLeftParams.height = 0;
mWindowManager.addView(topLeftView, params);
}