要解决Android透明活动在开始时无法触摸的问题,可以尝试以下方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置活动的Window属性
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
// 设置布局
setContentView(R.layout.activity_transparent);
// 此处可以添加其他初始化代码
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置布局
setContentView(R.layout.activity_transparent);
// 获取根布局
RelativeLayout rootLayout = findViewById(R.id.rootLayout);
// 添加触摸事件监听器
rootLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 处理触摸事件
return true; // 返回true表示已处理触摸事件
}
});
// 此处可以添加其他初始化代码
}
请注意,如果活动的Window属性设置为FLAG_NOT_TOUCH_MODAL,则活动之外的其他视图仍然可以接收触摸事件。如果需要阻止其他视图接收触摸事件,可以使用FLAG_NOT_FOCUSABLE标志:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
下一篇:android投影到ubuntu