android - 当 Android View 在应用程序中可见时是否会触发任何事件?

标签 android android-layout

我的应用程序包含多个 View (可滚动),其中之一是 CustomView(扩展 View ),当此 View 进入可见区域时是否会触发任何 android 事件。

我的方法是在 onAttachedToWindowonDetachedToWindow 的时间范围内使用后台线程 该线程将使用 customView.getGlobalVisibleRect(rectangle) 来检查 View 的任何部分是否在屏幕上可见,但这是自旋锁方法,是否有更好的方法来检测可见性,任何获取的事件在我可以调用 getGlobalVisibleRect

的地方触发

最佳答案

这是一个使用 ViewTreeObserver 的示例代码:

final View viewTemp = convertView;

convertView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
   @Override
   public void onGlobalLayout() {
      int rowHeight = viewTemp.getGlobalVisibleRect();
      ...
   });

注意事项:

  • 我不知道您的代码,也没有发布。代码 viewTemp = convertView 只是一个示例,使用适配器的代码。
  • 当出于多种原因绘制布局时,这是一个监听器。

关于android - 当 Android View 在应用程序中可见时是否会触发任何事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995545/

相关文章:

java - 无法让所有UI组件出现在RelativeLayout中

android - 动态 TextView 显示不正确

java - fragment 和文本转语音以及幻灯片菜单

Android 在两个应用之间共享用户 ID

ANDROID:如何为谷歌地图上的标记制作自定义 View (布局)

android - 将元素定位在 Android 上的 Activity 之外

Android Toolbar - 如何为导航模式实现 Spinner?

java - 安卓应用 : 2 problems with layout

android - 查找 Nexus S 相机 HAL 的源代码?

java - 当我将 Spinner 动态添加到 ListView 时,如何访问 Spinner 的选定项目?