画面の高さに沿ってキャンバスの月のテキストを垂直に描画したい。
ペイント初期化:
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画面では非常に見苦しく、ピクセル化されています。
さまざまなデバイスでさらにテストを行い、結果が画面密度や解像度ではなく、Android のバージョンに依存することを理解しました。
コードは 2.x プラットフォームでは問題なく動作しますが、4.0.3 以降では動作しません。ここで Android の draw 実装を変更したとします。ここで見ることができる完全なコード。
hdpiバージョン2.3.5 ( 2.2もテスト済み)
xhdpiバージョン4.2 ( 4.1、 4.0.3もテスト済み)
ペイント アンチエイリアスのさまざまなバリエーションを試してみましたが、サブピクセル テキストは効果がありません。この問題を解決するにはどうすればよいですか?