我尝试使用以下行为构建窗口小部件:仅在显示窗口小部件时才更新。 让我再解释一下它。假设智能手机可能有3个主屏幕,一个,两个和三个。小部件将放置在屏幕3上,如果您激活智能手机,它将在屏幕1上启动。因此,如果用户将屏幕更改为屏幕3,我只想更新小部件,我想对此事件做出反应。 android有没有机会这样做?
据我所知,遗憾的是没有办法做到这一点,因此无法了解可见性变化或类似情况。我在Google上找了好几个小时但没有找到任何有趣的东西。有人有其他信息吗?我很高兴任何暗示;希望你能帮助我。
答案 0 :(得分:0)
您可以尝试使用dispatchTouchEvent(希望您可以获取要检查的视图的x,y坐标。)
步骤:
例如:
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);
}
希望这会有所帮助。