我正在使用RelativeLayout将旋转的Spinner动画放置在占位图像的顶部,同时真实的图像正在后台线程中加载。
当真实的位图准备就绪时,以下代码在UI线程中运行,使用Activity.runOnUiThread(Runnable):
问题是,在真实图像加载完成后,我所有试图隐藏旋转图像的尝试似乎都失败了。最终通过将底层的ImageView带到最前面才使其工作,但我只是好奇为什么setVisibility(View.GONE)和其他我尝试过的方法不起作用。我尝试了各种方法来隐藏旋转动画,但它们都没有起作用。
Spinner图像简单地在ImageView中声明为:
当真实的位图准备就绪时,以下代码在UI线程中运行,使用Activity.runOnUiThread(Runnable):
问题是,在真实图像加载完成后,我所有试图隐藏旋转图像的尝试似乎都失败了。最终通过将底层的ImageView带到最前面才使其工作,但我只是好奇为什么setVisibility(View.GONE)和其他我尝试过的方法不起作用。我尝试了各种方法来隐藏旋转动画,但它们都没有起作用。
Spinner图像简单地在ImageView中声明为:
android:src="@drawable/spinner_black_20"
然后我在它上面启动旋转动画。一旦真实的图像被加载,这就是我尝试隐藏它的地方(如上所述,在UI线程中)
View v = (View)imageView.getParent();
ImageView spinner = (ImageView) v.findViewById(R.id.loading_spinner);
if (spinner != null) {
spinner.getAnimation().cancel(); // this works, the animation stops
spinner.setVisibility(View.INVISIBLE); // doesn't work, spinner bitmap still there
spinner.setVisibility(View.GONE); // doesn't work
spinner.getDrawable().setVisible(false, false); // tried this, no joy
spinner.refreshDrawableState(); // thought this might help, nope
spinner.invalidate(); // nor this
imageView.bringToFront(); // this works, in that spinner disappears to background
}
imageView.setImageBitmap(bitmap);