赞
踩
网上好多字体镂空效果都是单行的,及没有点击效果的,所以,我没办法就自己写了一个TextView ,目的是自定义这个,点击的时候才是镂空效果,但是,平时的时候是常态,就像是selector一样,这是一个工具类,你们拿去直接用就行了
- 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 版权所有,并保留所有权利。