有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以将一半的文本绘制成不同的颜色?

在我的手表面板中,我正在创建用于绘制文本的绘制对象,然后将这些对象传递给Canvas类drawText()方法

假设我想画时间,0841。我可以用一种颜色画前两个数字,用另一种颜色画后两个数字吗

例如,我想用白色绘制前两个数字,用红色绘制后两个数字。我可能会创建单独的绘制对象,并分别绘制分钟/小时,但我担心如果这样做,对齐会变得单调乏味

我附上了一张图片来说明我的意思

Paint hourPaint = new Paint();
hourPaint.setAntiAlias(true);
hourPaint.setTextSize(timeSize);

enter image description here


共 (1) 个答案

  1. # 1 楼答案

    是的,实现这一点很简单。 你在正确的轨道上。 试试这样:

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class ClockView extends View {
    private Paint mHourPaint;
    private Paint mMinutePaint;
    private float mFontSize;
    
    public ClockView(Context context) {
        this(context, null);
    }
    
    public ClockView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    
    public ClockView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    
        init();
    }
    
    private void init() {
        mFontSize = 92.0f;
    
        mHourPaint = new Paint();
        mHourPaint.setAntiAlias(true);
        mHourPaint.setColor(Color.WHITE);
        mHourPaint.setStyle(Paint.Style.FILL);
        mHourPaint.setTextSize(mFontSize);
    
        mMinutePaint = new Paint();
        mMinutePaint.setAntiAlias(true);
        mMinutePaint.setStyle(Paint.Style.FILL);
        mMinutePaint.setColor(Color.RED);
        mMinutePaint.setTextSize(mFontSize);
        mMinutePaint.setFakeBoldText(true);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    
        String hourText = "08";
        String minuteText = "41";
    
        final float x = mHourPaint.measureText(hourText);
        canvas.drawText(hourText, 0, mFontSize, mHourPaint);
    
        canvas.drawText(minuteText, x, mFontSize, mMinutePaint);
    }
    }
    

    一定要考虑到你不想绘制超出视图边界的东西的视口大小