我想沿着屏幕高度垂直绘制画布月的文本。
油漆初始化:
this.paint = new Paint();
this.paint.setAntiAlias(true);
this.paint.setDither(true);
this.paint.setSubpixelText(true);
this.paint.setColor(color_text_dark);
this.paint.setTextAlign(Align.RIGHT);
绘画:
// Set the scale to the widest month
float scale = getHeight() / this.max_month_width;
String month_string = FULL_MONTH_NAME_FORMATTER.
format(active_month_calendar.getTime());
canvas.save();
canvas.translate(getWidth(), 0);
canvas.rotate(-90);
canvas.scale(scale, scale);
canvas.drawText(month_string, 0, 0, this.paint);
canvas.restore();
结果在hdpi屏幕上看起来不错,但在xhdpi屏幕上非常丑陋和像素化。
我在各种设备上做了更多的测试,明白什么结果取决于安卓版本,而不是屏幕密度和分辨率。
代码在 2.x 平台上运行良好,但在 4.0.3+ 上无法运行。假设,Android draw 实现在这里被改变了。你可以在这里看到完整的代码。
hdpi 2.3.5版(也测试了2.2)
xhdpi 4.2版(也测试4.1, 4.0.3)
尝试绘制抗锯齿的不同变体,亚像素文本没有效果。我该如何解决这个问题?