Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 为字母的一部分着色的最佳方法是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望实现这样的目标:

android – 为字母的一部分着色的最佳方法是什么?

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

解决方法

一种方法是使用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,rectW,h,mPaint);
        canvas.restoreToCount(saveCount);
    }

    private float getProgress() {
        // TODO
    }
}

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

大佬总结

以上是大佬教程为你收集整理的android – 为字母的一部分着色的最佳方法是什么?全部内容,希望文章能够帮你解决android – 为字母的一部分着色的最佳方法是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。