FramedTextButton.java revision c5590eb1a20b112e67e4c43684790587f844fc6b
1package com.android.gallery3d.filtershow.ui; 2 3import android.content.Context; 4import android.content.res.TypedArray; 5import android.graphics.Canvas; 6import android.graphics.Paint; 7import android.graphics.Rect; 8import android.util.AttributeSet; 9import android.widget.ImageButton; 10 11import com.android.gallery3d.R; 12 13public class FramedTextButton extends ImageButton { 14 private static final String LOGTAG = "FramedTextButton"; 15 private String mText = null; 16 private static int mTextSize = 24; 17 private static int mTextPadding = 20; 18 private static Paint gPaint = new Paint(); 19 private Context mContext = null; 20 21 public static void setTextSize(int value) { 22 mTextSize = value; 23 } 24 25 public static void setTextPadding(int value) { 26 mTextPadding = value; 27 } 28 29 public void setText(String text) { 30 mText = text; 31 invalidate(); 32 } 33 34 public void setTextFrom(int itemId) { 35 switch (itemId) { 36 case R.id.curve_menu_rgb: { 37 setText(mContext.getString(R.string.curves_channel_rgb)); 38 break; 39 } 40 case R.id.curve_menu_red: { 41 setText(mContext.getString(R.string.curves_channel_red)); 42 break; 43 } 44 case R.id.curve_menu_green: { 45 setText(mContext.getString(R.string.curves_channel_green)); 46 break; 47 } 48 case R.id.curve_menu_blue: { 49 setText(mContext.getString(R.string.curves_channel_blue)); 50 break; 51 } 52 } 53 invalidate(); 54 } 55 56 public FramedTextButton(Context context, AttributeSet attrs) { 57 super(context, attrs); 58 mContext = context; 59 TypedArray a = getContext().obtainStyledAttributes( 60 attrs, R.styleable.ImageButtonTitle); 61 62 mText = a.getString(R.styleable.ImageButtonTitle_android_text); 63 } 64 65 public String getText(){ 66 return mText; 67 } 68 69 @Override 70 public void onDraw(Canvas canvas) { 71 gPaint.setARGB(255, 255, 255, 255); 72 gPaint.setStrokeWidth(2); 73 gPaint.setStyle(Paint.Style.STROKE); 74 canvas.drawRect(mTextPadding, mTextPadding, getWidth() - mTextPadding, 75 getHeight() - mTextPadding, gPaint); 76 if (mText != null) { 77 gPaint.setTextSize(mTextSize); 78 float textWidth = gPaint.measureText(mText); 79 Rect bounds = new Rect(); 80 gPaint.getTextBounds(mText, 0, mText.length(), bounds); 81 int x = (int) ((getWidth() - textWidth) / 2); 82 int y = (getHeight() + bounds.height()) / 2; 83 84 canvas.drawText(mText, x, y, gPaint); 85 } 86 } 87 88} 89