package tellh.com.gitclub.presentation.widget;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.drawable.RotateDrawable;
import android.util.AttributeSet;
import android.widget.Button;
import tellh.com.gitclub.R;
/**
* Created by tlh on 2016/9/18 :)
*/
public class RotateIconButton extends Button {
private RotateDrawable mDrawable;
private ButtonToggleHelper btnToggleHelper;
public RotateIconButton(Context context) {
super(context);
}
public RotateIconButton(Context context, AttributeSet attrs) {
super(context, attrs);
mDrawable = (RotateDrawable) getCompoundDrawables()[1];
btnToggleHelper = ButtonToggleHelper.builder()
.setBackgroundDrawable(R.drawable.selector_pink_right, R.drawable.selector_pink_right_checked)
.setTextColor(R.color.white, R.color.gray_text)
.setText(R.string.follow, R.string.unfollow)
.build();
}
public RotateIconButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setState(boolean checked) {
toggleAnim(checked);
btnToggleHelper.setState(this, checked);
}
protected void toggleAnim(final boolean toggle) {
ValueAnimator animator = ValueAnimator.ofInt(0, 10000);
animator.setTarget(mDrawable);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int value = (int) valueAnimator.getAnimatedValue();
if (!toggle)
value = 10000 - value;
mDrawable.setLevel(value);
}
});
animator.setDuration(100);
animator.start();
}
public boolean getState() {
return btnToggleHelper.getState(this);
}
public boolean toggle() {
boolean toggle = btnToggleHelper.toggle(this);
toggleAnim(toggle);
return toggle;
}
}