zwenkai 2014-05-16
找了一会,好像只有这一种解决方案。
远离就是在菜单按钮上,添加一层布局,然后在这一层布局上试用动画
代码:
public void setRefreshActionButtonState(final boolean refreshing) { if (optionsMenu != null) { final MenuItem refreshItem = optionsMenu .findItem(R.id.action_refresh); if (refreshItem != null) { if (refreshing) { LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); ImageView iv = (ImageView) inflater.inflate(R.layout.actionbar_flushing, null); Animation rotation = AnimationUtils.loadAnimation(this, R.anim.actionbar_rotate); if (iv != null && rotation != null) { iv.startAnimation(rotation); } MenuItemCompat.setActionView(refreshItem, iv); } else { MenuItemCompat.getActionView(refreshItem).clearAnimation(); MenuItemCompat.setActionView(refreshItem, null); } } } }
anim.xml
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:duration="500" android:repeatCount="-1" android:interpolator="@android:anim/linear_interpolator" />
加入的一层布局:
layout.xml
<?xml version="1.0" encoding="utf-8"?> <ImageButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_action_refresh" style="@style/Widget.AppCompat.Light.ActionButton" />
由于兼容API7 ,所以用的 AppCompat
参考:http://stackoverflow.com/questions/9731602/animated-icon-for-actionitem