赞
踩
public class ShowPalettePageTextView extends View {
public static final int BACKGROUND_COLOR = MyApp.getAppColor(R.color.color_dialog_text_content);
private static final int DEFAULT_RADIUS = MyApp.getAppDimen(R.dimen.default_radio_size);
private TextPaint mTextPaint;
private Paint mBackgroundPaint;
private RectF mBackgroundRect;
private boolean isPressed = false;
private String mShowPageText;
private Xfermode xfermode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
public ShowPalettePageTextView(Context context) {
this(context, null);
}
public ShowPalettePageTextView(Context context, AttributeSet attrs) {
this(context, attrs, -1);
}
public ShowPalettePageTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mTextPaint = new TextPaint();
mTextPaint.setAntiAlias(true);
mTextPaint.setColor(BACKGROUND_COLOR);
mTextPaint.setTextSize(MyApp.getAppDimen(R.dimen.text_size));
mBackgroundPaint = new Paint();
mBackgroundPaint.setColor(BACKGROUND_COLOR);
mBackgroundPaint.setAntiAlias(true);
mBackgroundRect = new RectF();
}
@Override
protected void onSizeChanged(int width, int height, int oldw, int oldh) {
super.onSizeChanged(width, height, oldw, oldh);
mBackgroundRect.set(0, 0, width, height);
}
public void setText(String showPageText) {
this.mShowPageText = showPageText;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
drawBackground(canvas);
drawText(canvas);
}
private void drawBackground(Canvas canvas) {
if (isPressed) {
mBackgroundPaint.setStyle(Paint.Style.FILL);
} else {
mBackgroundPaint.setStyle(Paint.Style.STROKE);
}
canvas.drawRoundRect(mBackgroundRect, DEFAULT_RADIUS, DEFAULT_RADIUS, mBackgroundPaint);
}
private void drawText(Canvas canvas) {
if (mShowPageText == null) {
return;
}
if (isPressed) {
mTextPaint.setXfermode(xfermode);
} else {
mTextPaint.setXfermode(null);
}
float x = mBackgroundRect.width() / 2 - mTextPaint.measureText(mShowPageText) / 2;
float y = mBackgroundRect.top + mBackgroundRect.height() / 2 + mTextPaint.getTextSize() / 3;
canvas.drawText(mShowPageText, x, y, mTextPaint);
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isPressed = true;
invalidate();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
isPressed = false;
invalidate();
}
return super.onTouchEvent(event);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。