我无法在画布上实现平滑、非常慢的文本动画,因为Canvas.drawText不想“在像素之间”绘制。例如,如果连续4帧绘制Y偏移量为0、0.5、1、1.5的文本,画布将分别在偏移量0、0、1、1处绘制,这将导致动画“抓拍”。有一个名为Paint.SUBPIXEL_TEXT_FLAG的标志,用来保持浮动精度。
我发现了一个相关的线程,Romain说这个标志目前在Android中是不受支持的:Meaning of some Paint constants in Android。
我的问题是:有什么解决办法吗?
注意:在另一个位图中绘制文本一次,然后用浮动偏移量绘制此位图,而不是绘制文本似乎也不起作用。
发布于 2012-09-14 09:28:26
您可以模拟这一效果,绘制两个文本并排与两个元素之间的阿尔法平衡( 127和255)。
假设您的文本从上到下移动,并且当前的垂直位置为10.28。你只需在第10位置画一个文字,阿尔法接近127,在11位置画另一个文本,阿尔法接近255。
下面是一个(丑陋的:D)示例:
private void doDraw(Canvas canvas) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLACK);
paint.setTextSize(20);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
mY += 0.05f;
paint.setColor(Color.RED);
if (Math.floor(mY) == mY) {
canvas.drawText("test", mX, mY, paint);
} else {
float mY1 = (float) Math.floor(mY);
float mY2 = mY1 + 1;
float delta = mY - mY1;
paint.setAlpha((int) ((1 - delta) * 127) + 127);
canvas.drawText("test", mX, mY1, paint);
paint.setAlpha((int) ((delta) * 127) + 127);
canvas.drawText("test", mX, mY2, paint);
}
}https://stackoverflow.com/questions/12420679
复制相似问题