您可以尝试使用 dispatchTouchEvent (希望您可以获得要检查的视图的 x,y 坐标。)
脚步 :
- 让 containerView 成为包含您的视图的视图。
- 为您的视图设置一个 ontouchlistener。
- 当屏幕发生变化或需要检查视图是否可见时,使用包含视图坐标的 MotionEvent 启动 dispatchTouchEvent 调用。
- 如果您的视图在该坐标区域中,则将调用您的视图的触摸事件。
例如 :
containerView = LayoutInflater.from(this).inflate(
R.layout.activity_main, null);
setContentView(containerView);
yourView = containerView.findViewById(R.id.yourView);
yourView .setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(MainActivity.this, "View visible",
Toast.LENGTH_SHORT).show();
return false;
}
});
当您需要检查时,请执行以下代码:
public void doCheck() {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 100f; //yourView x coordinate
float y = 100f; //yourView y coordinate
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_DOWN, x, y, metaState);
containerView.dispatchTouchEvent(motionEvent);
}
希望这会有所帮助。