Android 动画菜单项 showing/hiding 时

Android Animate Menu Items when showing/hiding them

当菜单项出现在操作栏中时,是否可以设置它们的动画?

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

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

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

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

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

非常感谢。

您可以在 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>