Android,setVisbility在RelativeLayout中不起作用

时间:2011-09-14 23:56:51

标签: android android-layout android-animation

我正在使用RelativeLayout将旋转微调器动画放在占位符图像上,同时在背景线程中加载真实图像。

当真正的位图准备就绪时,下面的代码在带有Activity.runOnUiThread(Runnable)的UI线程中运行

问题是,我在加载真实图像后隐藏旋转图像的所有尝试似乎都失败了。我最终通过将底层的imageview带到前面来实现它,但我只是好奇为什么setVisibility(View.GONE)和我尝试的其他方法都不起作用。我尝试了各种方法试图隐藏旋转动画,但它们都没有奏效。

微调器图像仅在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);

1 个答案:

答案 0 :(得分:62)

尝试在setVisibility之前调用spinner.clearAnimation();

Rich提到的......