package cn.scau.scautreasure.widget; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.FrameLayout; import android.widget.ImageView; import cn.scau.scautreasure.R; /** * Created by special on 14-5-7. */ public class RefreshActionItem extends FrameLayout implements View.OnClickListener { private ImageView mRefreshButton; private MenuItem mMenuItem; private RefreshButtonListener refreshButtonListener; public interface RefreshButtonListener{ public void onRefresh(RefreshActionItem refreshActionItem); } public RefreshActionItem(Context context) { this(context, null); } public RefreshActionItem(Context context, AttributeSet attrs) { this(context, attrs, 0); } public RefreshActionItem(Context context, AttributeSet attrs, int defStyle) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.refresh_action_item, this); mRefreshButton = (ImageView) findViewById(R.id.refresh_icon); mRefreshButton.setOnClickListener(this); } // Start to rotating the refresh icon. public void startProgress(){ if (mRefreshButton.getAnimation() != null) return; RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setDuration(500); rotateAnimation.setFillAfter(false); rotateAnimation.setRepeatCount(-1); rotateAnimation.setRepeatMode(Animation.RESTART); rotateAnimation.setInterpolator(new LinearInterpolator()); mRefreshButton.startAnimation(rotateAnimation); } // Clear the animations of refresh icon. public void stopProgress(){ mRefreshButton.clearAnimation(); } public void setMenuItem(MenuItem menuItem) { this.mMenuItem = menuItem; if (menuItem.getIcon() != null) { mRefreshButton.setImageDrawable(mMenuItem.getIcon()); } } public RefreshButtonListener getRefreshButtonListener() { return refreshButtonListener; } public void setRefreshButtonListener(RefreshButtonListener refreshButtonListener) { this.refreshButtonListener = refreshButtonListener; } @Override public void onClick(View view) { if (refreshButtonListener != null) { refreshButtonListener.onRefresh(this); } } }