2014-01-11 4 views
0

Я использую Sattelite Menu в своем приложении для Android.Спутниковое меню: анимация работает только один раз

Я включил его в качестве своего проекта, добавил следующие XML и Java, и приложение работает нормально, никаких ошибок.

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:sat="http://schemas.android.com/apk/res/android.view.ext" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <android.view.ext.SatelliteMenu 
     android:id="@+id/menu" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|left" 
     android:layout_margin="8dp" 
     sat:satelliteDistance="170dp" 
     sat:mainImage="@drawable/ic_launcher" 
     sat:totalSpacingDegree="90" 
     sat:closeOnClick="true" 
     sat:expandDuration="500"/> 

</FrameLayout> 

и Java:

SatelliteMenu menu = (SatelliteMenu) findViewById(R.id.menu); 
    List<SatelliteMenuItem> items = new ArrayList<SatelliteMenuItem>(); 
    items.add(new SatelliteMenuItem(3, R.drawable.ic_launcher)); 
    items.add(new SatelliteMenuItem(2, R.drawable.ic_launcher)); 
    items.add(new SatelliteMenuItem(1, R.drawable.ic_launcher)); 

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

Проблема начинается. Теперь, когда я нажимаю на нее снова (в 3 раза), на этот раз анимации нет. Кнопки просто отображаются в правильных местах (и все еще работают), но они не вылетают. По какой-то причине анимация не запускается.

Я попытался посмотреть источник, и этого не должно произойти. Даже образец приложения работает идеально. Но когда я реализовал его в своем приложении, анимация работает только при первом открытии меню.

Что может быть причиной этого?

Спасибо!

EDIT: Это решение тоже не работает. Он ничего не делал:/

private void onClick() { 
    if (plusAnimationActive.compareAndSet(false, true)) { 
     if (!rotated) { 
      resetItems(); 
      imgMain.startAnimation(mainRotateLeft); 
      for (SatelliteMenuItem item : menuItems) { 
       item.getView().startAnimation(item.getOutAnimation()); 
      } 
     } else { 
      resetItems(); 
      imgMain.startAnimation(mainRotateRight); 
      for (SatelliteMenuItem item : menuItems) { 
       item.getView().startAnimation(item.getInAnimation()); 
      } 
     } 
     rotated = !rotated; 
    } 
} 

ответ

0

Макет Анимация запускается при добавлении представлений в макет. Таким образом, вам придется вручную добавлять/удалять представления при каждом расширении/сведении для анимации макета.

+0

Но в меню много анимаций, и только один вариант добавления анимаций (menu.startanimation) ... Если я использую чистую анимацию, которая тоже ничего не меняет ... Как именно вы предлагаете мне это исправить? – Zirolo

+0

В классе SatelliteMenu у нас есть метод onClick для imgMain. В том, что перед вызовом startAnimation (оба условия if и else) просто вызывайте resetItems(). – user543

+0

Просьба видеть мое редактирование, это то, о чем вы говорили? Боюсь, что этого не делал:/ – Zirolo

Смежные вопросы