package com.rey.material.widget; import com.rey.material.drawable.CheckBoxDrawable; import android.content.Context; import android.util.AttributeSet; public class CheckBox extends CompoundButton { public CheckBox(Context context) { super(context); init(context, null, 0, 0); } public CheckBox(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs, 0, 0); } public CheckBox(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr, 0); } public CheckBox(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr, defStyleRes); } private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){ applyStyle(context, attrs, defStyleAttr, defStyleRes); } public void applyStyle(int resId){ applyStyle(getContext(), null, 0, resId); } private void applyStyle(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){ CheckBoxDrawable drawable = new CheckBoxDrawable.Builder(context, attrs, defStyleAttr, defStyleRes).build(); drawable.setInEditMode(isInEditMode()); drawable.setAnimEnable(false); setButtonDrawable(drawable); drawable.setAnimEnable(true); } /** * Change the checked state of this button immediately without showing animation. * @param checked The checked state. */ public void setCheckedImmediately(boolean checked){ if(mButtonDrawable instanceof CheckBoxDrawable){ CheckBoxDrawable drawable = (CheckBoxDrawable)mButtonDrawable; drawable.setAnimEnable(false); setChecked(checked); drawable.setAnimEnable(true); } else setChecked(checked); } }