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