卫星菜单:动画只能工作一次

时间:2014-01-11 10:41:32

标签: java android xml animation menu

我在我的Android应用中使用Sattelite Menu

我把它作为我的项目包含在内,添加了以下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次)时,这次没有动画。按钮只是出现在正确的位置(并且仍在工作),但它们不会飞出。由于某种原因,动画无法启动。

我试图查看来源,这不应该发生。即使是示例应用程序也很完美。但是当我在我自己的应用程序中实现它时,动画只在我打开菜单时第一次工作。

导致这种情况的原因是什么?

谢谢!

编辑:此解决方案也不起作用。它什么都没做:/

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

1 个答案:

答案 0 :(得分:0)

布局动画在将视图添加到布局时运行。因此,您必须在每次展开/折叠时手动添加/删除视图才能使布局动画生效。