gpt4 book ai didi

android - 给信件的一部分上色的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:26 24 4
gpt4 key购买 nike

我想实现这样的目标:

enter image description here

首先想到的是在 Canvas 上绘制文本两次,并用形状覆盖第一个文本。但也许有更好的解决方案。

最佳答案

一种方法是使用 PorterDuffXfermode 在文本上合成蓝色矩形。您可以扩展 TextView 并覆盖 onDraw() 以在绘制文本后使用适当的模式绘制矩形(我相信 XOR是你想要的)它应该达到预期的效果。像这样:

public class ProgressTextView extends TextView {

private static final float MAX_PROGRESS = ...;

private Paint mPaint;

public ProgressTextView(Context context) {
super(context);
initPaint();
}

/* other constructor omitted, but do the same pattern in those */

private void initPaint() {
mPaint = new Paint();
mPaint.setColor(...);
mPaint.setXfermode(new PorterDuffXfermode(Mode.XOR));
// note: you may also need the following line if hardware accel is available
setLayerType(LAYER_TYPE_SOFTWARE, null);
}

@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawProgress(canvas);
}

private void drawProgress(Canvas canvas) {
int w = getWidth() - getPaddingLeft() - getPaddingRight();
int h = getHeight() - getPaddingTop() - getPaddingBottom();
float progress = getProgress();
float rectW = w * (progress / MAX_PROGRESS);

int saveCount = canvas.save();
canvas.translate(getPaddingLeft(), getPaddingTop());
canvas.drawRect(0, 0, rectW, h, mPaint);
canvas.restoreToCount(saveCount);
}

private float getProgress() {
// TODO
}
}

有关 Porter/Duff 合成的更多信息:http://ssp.impulsetrain.com/porterduff.html

关于android - 给信件的一部分上色的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38833559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com