bhu*_*ups 22 android visibility view
检查视图是否在窗口中可见的最佳方法是什么?
我有一个CustomView,它是我的SDK的一部分,任何人都可以将CustomView添加到他们的布局中.我的CustomView会在用户定期看到它时采取一些操作.因此,如果视图对用户不可见,那么它需要停止计时器,当它再次变为可见时,它应该重新启动它的过程.
但遗憾的是,没有某种方法可以检查我的CustomView是否对用户可见或不可见.我可以检查和收听的内容很少:
onVisibilityChange //it is for view's visibility change, and is introduced in new API 8 version so has backward compatibility issue
onWindowVisibilityChange //but my CustomView can be part of a ViewFlipper's Views so it can pose issues
onDetachedFromWindows //this not as useful
onWindowFocusChanged //Again my CustomView can be part of ViewFlipper's views.Run Code Online (Sandbox Code Playgroud) 所以如果有人遇到过这种问题,请稍微说清楚.
小智 7
onDraw()每次需要绘制视图时调用.当视图不在屏幕上时,则永远不会调用onDraw().当用户看到一小部分视图时,就会调用onDraw().这不是理想的,但我看不到另一个使用的电话,因为我想做同样的事情.记得调用super.onDraw或者视图不会被绘制.小心改变onDraw中的任何内容会导致视图无效,因为这将导致对onDraw的另一次调用.
如果您使用的是列表视图,则只要向您的用户显示列表视图,就可以使用getView.
很明显,该活动onPause()被称为所有视图都被掩盖,并且对用户不可见.也许在父对象上调用invalidate(),如果没有调用ondraw()那么它就不可见了.
在我的情况下,如果视图可见,则以下代码最有效:
@Override
protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
Log.e(TAG, "is view visible?: " + (visibility == View.VISIBLE));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21081 次 |
| 最近记录: |