2012-10-23 1 views
4

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

Текущее решение прекрасно работает на двух моих устройствах, в которых используется пряничный прядильщик, и тот, который использует 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 на LoadUp как когда сделано в 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 есть, потому что вы можете нажать кнопки и он выполняет свои функции, а также функции, чтобы показать в настоящее время называется, но я просто не могу видеть это!

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

ответ

6

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

+0

Вы были правы в том, где проблема, но установив ее в 1 в xml-файле, все остальное прекрасно работает. – StuStirling

+0

Да не мог из-за таймера. – StuStirling

2

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

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

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

Я не уверен на 100% об этом, но так оно и выглядит.

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