If you think the Android project OpenSynth listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package com.indigo_lab.android.opensynth.view;
/*fromwww.java2s.com*/import com.indigo_lab.android.opensynth.R;
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;
publicclass ImageRadioButton extends RadioButton {
private Drawable mButtonDrawable;
public ImageRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CompoundButton, 0, 0);
mButtonDrawable = a.getDrawable(R.styleable.CompoundButton_android_src);
a.recycle();
}
@Override
protectedvoid onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mButtonDrawable != null) {
mButtonDrawable.setState(getDrawableState());
finalint verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
finalint height = mButtonDrawable.getIntrinsicHeight();
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height) / 2;
break;
}
int buttonWidth = mButtonDrawable.getIntrinsicWidth();
int buttonLeft = (getWidth() - buttonWidth) / 2;
mButtonDrawable.setBounds(buttonLeft, y, buttonLeft+buttonWidth, y + height);
mButtonDrawable.draw(canvas);
}
}
}