可以在菜单项出现在操作栏中时为其设置动画?
我在水平寻呼机视图中有3个片段,当我在第一个时,我有这个:
http://i.stack.imgur.com/UuI48.png
在第二个片段上,我有这个:
http://i.stack.imgur.com/hZJG3.png
但是当我互相滑动时,动作栏中的项目只会出现(弹出)或消失,我认为如果它们从右向左滑动会更好用户体验。
非常感谢。
答案 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>