Android, setVisbility не работает в RelativeLayout

Я использую RelativeLayout, чтобы поместить вращающуюся анимацию спиннера поверх изображения-заполнителя, пока реальное изображение загружается в фоновый поток.

Когда реальное растровое изображение готово, код ниже запускается в потоке пользовательского интерфейса с Activity.runOnUiThread (Runnable)

Проблема в том, что все мои попытки скрыть вращающееся изображение после реального изображения были загружены, похоже, терпят неудачу. Я начал работать, наконец, приведя базовое изображение на передний план, но мне просто интересно, почему setVisibility (View.GONE) и другие методы, которые я пытался, не работают. Я пробовал различные методы, пытаясь скрыть вращающуюся анимацию, но никто из них не работал.

Образ spinner объявляется просто в ImageView как:

android:src="@drawable/spinner_black_20" 

Затем я начинаю анимацию вращения. Когда загружается реальное изображение, я пытаюсь скрыть его (в потоке пользовательского интерфейса, как указано выше)

 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); 

Попробуйте вызвать spinner.clearAnimation(); Перед setVisibility.

Это то, что сказал Rich …