显示/隐藏它们时的Android Animate菜单项

时间:2015-01-22 16:47:23

标签: android android-animation

可以在菜单项出现在操作栏中时为其设置动画?

我在水平寻呼机视图中有3个片段,当我在第一个时,我有这个:

http://i.stack.imgur.com/UuI48.png

在第二个片段上,我有这个:

http://i.stack.imgur.com/hZJG3.png

但是当我互相滑动时,动作栏中的项目只会出现(弹出)或消失,我认为如果它们从右向左滑动会更好用户体验。

非常感谢。

1 个答案:

答案 0 :(得分:3)

您可以在onCreateOptionsMenu(Menu menu)中为菜单项设置动画。糟糕的实现可能是这样的:

public class YourFragment extends Fragment{

private boolean mShouldAnimateMenuItem = true;


@Override
public boolean onCreateOptionsMenu(final Menu menu) {


    getMenuInflater().inflate(R.menu.your_menu, menu);

    if (mShouldAnimateMenuItem){
        ImageView image = new ImageView(this);      
        image.setImageResource(R.drawable.your_menu_item_icon);
        menu.getItem(0).setActionView(image); //item in the 0 position
        Animation anim = AnimationUtils.loadAnimation(getActivity(),R.anim.translate_from_right_to_current_accelerate_fast);
        anim.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                menu.getItem(0).setActionView(null);

            }
        });
        menu.getItem(0).getActionView().startAnimation(anim);
        mShouldAnimateMenuItem = false;

    }


    return true;
}
}

通过这种方式,您可以为actionView设置动画,完成后,您只需丢弃项目的actionView即可。

<强> translate_from_right_to_current_accelerate_fast.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="false"
android:interpolator="@android:anim/accelerate_interpolator" >

<translate
    android:duration="2000"
    android:fromXDelta="100%p"
    android:toXDelta="0" />

</set>