
首先想到的是在画布上绘制文本两次,并用形状覆盖第一个文本.但也许有更好的解决方案.
解决方法 一种方法是使用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 – 为字母的一部分着色的最佳方法是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)