我尝试使用动作视图为ActionBtem设置动画,其方式与ActionBarHelper for Honeycomb类似,以获得旋转刷新按钮。但我有两个麻烦:
Different steps of MenuItem (Screenshots)
ActionView Layout(R.layout.menu_item_refresh)是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu_refresh" />
</LinearLayout>
onOptionsItemSelected方法代码是:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
default:
return super.onOptionsItemSelected(item);
case R.id.Menu_Feed_Refresh:
mAnimatedItem = item;
item.setActionView(R.layout.menu_item_refresh);
item.startAnimation(mAnimation);
load();
return true;
}
}
加载完成后,我调用处理程序mAnimatedItem.setActionView(null)
答案 0 :(得分:0)
如果我正确地取消了您的代码,您可以将动画应用于MenuItem。您按setActionView(null)
删除ActionView,但menuItem动画。
您需要从ActionView获取图像并将动画应用于它:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
default:
return super.onOptionsItemSelected(item);
case R.id.Menu_Feed_Refresh:
mAnimatedItem = item;
item.setActionView(R.layout.menu_item_refresh);
ImageView iv = (ImageView) item.getActionView().findViewById(R.id.refresh_image_id);
iv.startAnimation(mAnimation);
load();
return true;
}
}
答案 1 :(得分:0)
如果您想要停止,请致电mAnimation.clearAnimation()
。