package com.cheng.animationstudy.customview.wandoujia;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.RadioButton;
import com.cheng.animationstudy.R;
/**
* 图片居中,并可以设置图片大小的TabItem
*/
public class IconTabItem extends RadioButton {
private Drawable mButtonDrawable;
private int mDrawableWidth;
private int mDrawableHeight;
public IconTabItem(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CompoundButton);
mButtonDrawable = typedArray.getDrawable(R.styleable.CompoundButton_android_button);
mDrawableWidth = typedArray.getDimensionPixelSize(R.styleable.CompoundButton_drawableWidth, 0);
mDrawableHeight = typedArray.getDimensionPixelSize(R.styleable.CompoundButton_drawableHeight, 0);
setButtonDrawable(R.drawable.sdd_empty_drawable);
typedArray.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mButtonDrawable != null) {
mButtonDrawable.setState(getDrawableState());
final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int buttonHeight = mDrawableWidth==0 ? mButtonDrawable.getIntrinsicHeight() : mDrawableWidth;
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - buttonHeight;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - buttonHeight) / 2;
break;
}
int buttonWidth = mDrawableHeight==0 ? mButtonDrawable.getIntrinsicWidth() : mDrawableHeight;
int buttonLeft = (getWidth() - buttonWidth) / 2;
mButtonDrawable.setBounds(buttonLeft, y, buttonLeft + buttonWidth, y + buttonHeight);
mButtonDrawable.draw(canvas);
}
}
}