Android - 如何确定加载到 ImageView 的位图何时显示?

Android - how to determine when bitmap loaded to ImageView gets displayed?

我正在开发 Android (6.0) 应用程序,该应用程序需要在附加屏幕(通过 HDMI 端口连接)上显示图像。它是通过使用 Glide 库和 Presentation class 完成的。 Glide 提供了 "onResourceReady" 事件,该事件应该在图像加载到 imageview 完成时触发。遗憾的是,我确定这并不意味着图像已经显示!

我需要知道这个附加屏幕上什么时候有图像,因为我需要精确测量它显示的时间。我也尝试检查我的 imageview "isDirty" 并且我还注意到,即使在我的这个方法 returns false (所以图像视图不再脏)之间仍然有一段时间(imageview 停止脏)和屏幕上实际绘制的图像。

Android 是否提供任何在图像真正显示在屏幕上后触发的机制?即使它需要一些黑客攻击,深入研究 NDK 等?

您应该使用 GlobalLayoutListener 来确定您的视图何时绘制。示例实现:

yourImageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            yourImageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            //Put your measurements here.
        }
}