AlphaAnimation не работает в мороженом сэндвич

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

Текущее решение прекрасно работает на двух моих устройствах, которые используют Gingerbread, и тот, который использует Froyo. Однако, это не работает на мороженое Сэндвич ?!

Вот мой xml-макет.

 <LinearLayout android:id="@+id/photoOptionBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:alpha="0" android:background="@color/gpsBackground" android:orientation="horizontal"> <ImageButton android:id="@+id/displayShareBtn" style="@android:style/Widget.Holo.Button.Borderless.Small" android:background="@android:color/transparent" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal" android:padding="20dp" android:src="@drawable/share" android:contentDescription="Share the picture"/> <ImageButton android:id="@+id/displayDiscardBtn" style="@android:style/Widget.Holo.Button.Borderless.Small" android:background="@android:color/transparent" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal" android:padding="20dp" android:src="@drawable/contentdiscard" android:contentDescription="Discard Picture"/> </LinearLayout> 

Вот мой метод onCreate, чтобы установить альфа-значение 0 при загрузке, как это делается в xml, это не работает …

  AlphaAnimation alpha = new AlphaAnimation(0.0F, 0.0F); alpha.setDuration(0); // Make animation instant alpha.setFillAfter(true); // Tell it to persist after the animation ends // And then on your layout this._photoOptionsBar.startAnimation(alpha); 

И затем, когда я хочу показать это, я вызываю следующее.

 public void showOptions() { AlphaAnimation alpha = new AlphaAnimation(0.0F, 1.0F); alpha.setDuration(PhotoDisplayFragment.FADE_DURATION); // Make animation instant alpha.setFillAfter(true); this._photoOptionsBar.startAnimation(alpha); this._optionsShowing = true; } 

Когда я загружаю его в бутерброд IceCream, LinearLayout существует, потому что вы можете щелкнуть по кнопкам, и он выполняет свою функцию, а функции для показа вызывают, но я просто не вижу этого!

Любая помощь будет отличной

Проблема заключается в android:alpha=0 в линейной компоновке. Чтобы все было в этом, вы должны установить свойство видимости в невидимое в макете xml. И перед запуском альфа-анимации вызовите setVisibility(View.VISIBLE)

У меня была такая же проблема.

Кажется, есть два отдельных альфа-свойства. AlphaAnimation меняет одно, а android:alpha меняет другой. Оба свойства используются в ICS, но android:alpha игнорируется pre-ICS.

Поэтому, если вы установили android:alpha="0" и используете AlphaAnimation для создания анимации, pre-ICS будет работать нормально, поскольку android:alpha игнорируется. В ICS представление всегда будет невидимым, потому что AlphaAnimation не изменяет android:alpha от 0. Поэтому решение просто удалить строку android:alpha="0" .

Я не уверен на 100%, но так оно и кажется.

Я также думаю, что два альфа работают несколько иначе. Конечно, если вы измените альфа-изображение ImageView с полупрозрачным изображением, он выглядит намного хуже с AlphaAnimation чем android:alpha . Но вы ничего не можете с этим поделать.