From 18f7993797a445f033783132ca8d2c54961419c0 Mon Sep 17 00:00:00 2001
From: nilupeng <qingingrunt2010@qq.com>
Date: Thu, 11 Aug 2022 07:49:09 +0000
Subject: [PATCH] drawable tint问题
---
app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java | 64 +++++++++++++++++---------------
1 files changed, 34 insertions(+), 30 deletions(-)
diff --git a/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java b/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java
index df3fd5a..8a811de 100644
--- a/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java
+++ b/app/src/main/java/com/runt/open/mvvm/widgets/TitleBarView.java
@@ -2,22 +2,14 @@
import android.content.Context;
import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.graphics.drawable.BitmapDrawable;
+import android.graphics.*;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
-
import androidx.annotation.ColorInt;
import androidx.annotation.Nullable;
-
import com.runt.open.mvvm.R;
import com.runt.open.mvvm.util.DimensionUtils;
@@ -32,7 +24,7 @@
String titleText,rightText;
@ColorInt int titleColor,rightTextColor;
float titleSize,rightTextSize,rightPadding;
- Paint textPaint,rightTextPaint,drawPaint;
+ Paint textPaint,rightTextPaint;
int viewWidth,viewHeight;
OnClickListener leftClick,rightClick;
int touchStartX,touchStartY;
@@ -75,27 +67,24 @@
if(rightTint != -1) {
setTint(rightDra,rightTint);
}
- textPaint = new Paint();
- textPaint.setAntiAlias(true); // 是否抗锯齿
+
+ textPaint = initPaint(titleColor,titleSize,4);
+
+ rightTextPaint = initPaint(rightTextColor,rightTextSize,4);
+
+ }
+
+ private Paint initPaint(int color,float size,int stroke){
+ Paint paint = new Paint();
+ paint.setAntiAlias(true); // 是否抗锯齿
//mTextPaint.setAlpha(50); // 设置alpha不透明度,范围为0~255
- textPaint.setColor(titleColor);
- textPaint.setTextSize(titleSize);
+ paint.setColor(color);
+ paint.setTextSize(size);
// 设置画笔属性
- textPaint.setStyle(Paint.Style.FILL);//画笔属性是实心圆
+ paint.setStyle(Paint.Style.FILL);//画笔属性是实心圆
// paint.setStyle(Paint.Style.STROKE);//画笔属性是空心圆
- textPaint.setStrokeWidth(4);//设置画笔粗细
-
-
- rightTextPaint = new Paint();
- rightTextPaint.setAntiAlias(true); // 是否抗锯齿
- //mTextPaint.setAlpha(50); // 设置alpha不透明度,范围为0~255
- rightTextPaint.setColor(rightTextColor);
- rightTextPaint.setTextSize(rightTextSize);
- // 设置画笔属性
- rightTextPaint.setStyle(Paint.Style.FILL);//画笔属性是实心圆
- // paint.setStyle(Paint.Style.STROKE);//画笔属性是空心圆
- rightTextPaint.setStrokeWidth(4);//设置画笔粗细
-
+ paint.setStrokeWidth(stroke);//设置画笔粗细
+ return paint;
}
@Override
@@ -113,7 +102,7 @@
super.onDraw(canvas);
Log.e("TitleBarView","onDraw mRect:"+mRect);
if(leftDra != null){
- final Bitmap bitmap = ((BitmapDrawable) leftDra).getBitmap();
+ final Bitmap bitmap = drawableToBitmap(leftDra);
float top = mRect.top+(viewHeight-bitmap.getHeight()*2f)/2;
float left = mRect.left-bitmap.getWidth()*0.5f;
leftClickRect = new RectF(left,top,left + (bitmap.getWidth()*2f),top + bitmap.getHeight()*2f);
@@ -121,7 +110,7 @@
}
if(rightDra != null){
- final Bitmap bitmap = ((BitmapDrawable) rightDra).getBitmap();
+ final Bitmap bitmap = drawableToBitmap(rightDra);
float chaTop = (viewHeight-bitmap.getHeight())/2;
float top = mRect.top+chaTop;
float left = mRect.right-bitmap.getWidth();
@@ -267,4 +256,19 @@
drawable.setTint(color);
}
}
+
+
+ private Bitmap drawableToBitmap(Drawable drawable){
+ int w = drawable.getIntrinsicWidth();
+ int h = drawable.getIntrinsicHeight();
+ Bitmap.Config config =
+ drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
+ : Bitmap.Config.RGB_565;
+ Bitmap bitmap = Bitmap.createBitmap(w,h,config);
+ //注意,下面三行代码要用到,否在在View或者surfaceview里的canvas.drawBitmap会看不到图
+ Canvas canvas = new Canvas(bitmap);
+ drawable.setBounds(0, 0, w, h);
+ drawable.draw(canvas);
+ return bitmap;
+ }
}
--
Gitblit v1.9.1