FramedTextButton.java revision a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1
1a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard/* 2a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * Copyright (C) 2012 The Android Open Source Project 3a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * 4a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * Licensed under the Apache License, Version 2.0 (the "License"); 5a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * you may not use this file except in compliance with the License. 6a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * You may obtain a copy of the License at 7a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * 8a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * http://www.apache.org/licenses/LICENSE-2.0 9a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * 10a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * Unless required by applicable law or agreed to in writing, software 11a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * distributed under the License is distributed on an "AS IS" BASIS, 12a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * See the License for the specific language governing permissions and 14a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * limitations under the License. 15a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard */ 16a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard 17c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardpackage com.android.gallery3d.filtershow.ui; 18c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 19c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.content.Context; 20c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.content.res.TypedArray; 21c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Canvas; 22c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Paint; 23c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Rect; 24c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.util.AttributeSet; 25c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.widget.ImageButton; 26c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 27c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport com.android.gallery3d.R; 28c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 29c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardpublic class FramedTextButton extends ImageButton { 30c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard private static final String LOGTAG = "FramedTextButton"; 31c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard private String mText = null; 32c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard private static int mTextSize = 24; 33c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard private static int mTextPadding = 20; 34c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard private static Paint gPaint = new Paint(); 35c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard private Context mContext = null; 36c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 37c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public static void setTextSize(int value) { 38c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard mTextSize = value; 39c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 40c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 41c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public static void setTextPadding(int value) { 42c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard mTextPadding = value; 43c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 44c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 45c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public void setText(String text) { 46c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard mText = text; 47c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard invalidate(); 48c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 49c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 50c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public void setTextFrom(int itemId) { 51c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard switch (itemId) { 52c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard case R.id.curve_menu_rgb: { 53c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard setText(mContext.getString(R.string.curves_channel_rgb)); 54c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard break; 55c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 56c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard case R.id.curve_menu_red: { 57c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard setText(mContext.getString(R.string.curves_channel_red)); 58c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard break; 59c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 60c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard case R.id.curve_menu_green: { 61c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard setText(mContext.getString(R.string.curves_channel_green)); 62c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard break; 63c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 64c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard case R.id.curve_menu_blue: { 65c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard setText(mContext.getString(R.string.curves_channel_blue)); 66c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard break; 67c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 68c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 69c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard invalidate(); 70c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 71c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 72c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public FramedTextButton(Context context, AttributeSet attrs) { 73c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard super(context, attrs); 74c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard mContext = context; 75c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard TypedArray a = getContext().obtainStyledAttributes( 76c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard attrs, R.styleable.ImageButtonTitle); 77c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 78c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard mText = a.getString(R.styleable.ImageButtonTitle_android_text); 79c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 80c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 81c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public String getText(){ 82c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard return mText; 83c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 84c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 85c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard @Override 86c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard public void onDraw(Canvas canvas) { 87c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard gPaint.setARGB(255, 255, 255, 255); 88c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard gPaint.setStrokeWidth(2); 89c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard gPaint.setStyle(Paint.Style.STROKE); 90c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard canvas.drawRect(mTextPadding, mTextPadding, getWidth() - mTextPadding, 91c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard getHeight() - mTextPadding, gPaint); 92c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard if (mText != null) { 93c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard gPaint.setTextSize(mTextSize); 94c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard float textWidth = gPaint.measureText(mText); 95c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard Rect bounds = new Rect(); 96c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard gPaint.getTextBounds(mText, 0, mText.length(), bounds); 97c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard int x = (int) ((getWidth() - textWidth) / 2); 98c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard int y = (getHeight() + bounds.height()) / 2; 99c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 100c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard canvas.drawText(mText, x, y, gPaint); 101c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 102c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard } 103c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard 104c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard} 105