Я использую 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;
}
}
Но в меню много анимаций, и только один вариант добавления анимаций (menu.startanimation) ... Если я использую чистую анимацию, которая тоже ничего не меняет ... Как именно вы предлагаете мне это исправить? – Zirolo
В классе SatelliteMenu у нас есть метод onClick для imgMain. В том, что перед вызовом startAnimation (оба условия if и else) просто вызывайте resetItems(). – user543
Просьба видеть мое редактирование, это то, о чем вы говорили? Боюсь, что этого не делал:/ – Zirolo