Android: 在其他 ImageView 后面更新 ImageView 背景

Android: Update ImageView Background while Behind other ImageView

我正在构建一个应用程序,我想在其中滑动图像,就好像它们是堆栈中的照片一样。换句话说,如果我滑动顶部图像,我希望它以动画方式朝滑动方向移动,并始终显示其下方的下一张图像。为此,我使用了一个 FrameLayout 和两个 ImageView 容器。我只是交替哪个在上面。同时,一旦滑动发生,下一张图像就会使用 setBackground(drawable) 加载到后面的 ImageView 中。我的问题是后面的 ImageView 在我调用 bringToFront() 之前不会更新它的图像,这意味着当顶部 ImageView 正在动画时,下面的图像不正确直到动画完成,此时它突然变为正确的图像。我试过在 setBackground(drawable) 之后调用 ImageView 后面的 invalidate() 但这不起作用。任何人都知道如何让图像在落后时更新?

更新:事实证明我今天不太在意它。我正在更新错误 ImageView 并且因为图像加载是在网络之外完成的,所以延迟足以让我认为这是在动画完成后发生的。

在我看来你想做类似 Image Slider.

的事情

有很多用于此目的的优秀库,例如这个:

https://github.com/daimajia/AndroidImageSlider


如果您不想使用它,这里有一些提示:

  • ImageView 上的图像设置为setImageDrawable(Drawable)

  • 当您的动画开始时,将新图像设置到您的 ImageView 后面并将可见的图像滑开。

  • 当可见的ImageView滑开后,将其可见性设置为GONE并将其移到第二个ImageView

    [=42之后=]

每次加载新图像时都执行此操作。

这应该确实有效。

你需要一个"ViewPager"

https://developer.android.com/training/animation/screen-slide.html

它具有容纳 "N" 数量图像的所有必要句柄 - 还支持多个滑动动画 - 默认处理程序 - 高效的内存管理 - 预取 - 你都可以享受这个盛宴!!

只需确保在 "ViewPager" 上开发的 "pages" 布局中得到 "ImageView"。