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