CanvasにDrawTextしたときのテキストをなめらかにする
AndroidのCanvasにDrawTextすると表示がギザギザなのに驚くことでしょう。なんと、DrawTextはそのまま使うとアンチエイリアス無しで表示されるのです。これを解決するための方法を紹介します。
PaintクラスのsetAntiAliasを実行する
対処方法は、PaintクラスのsetAntiAliasに引数trueを渡すことです。
// 文字列を出力する
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(1);
paint.setTextSize(30);
paint.setColor(Color.argb(255, 10, 10, 255));
paint.setAntiAlias(true);
int interval = sp / dpi;
int price_label = (int)min_price;
for (int i = 0; i <= (diff_price / sp); i++) {
int y = (chart_height - bottom_offset) - i * interval;
if (y < 0) break;
canvas.drawText(String.valueOf(price_label), 30, top_offset + y, paint);
price_label = price_label + sp;
}作成中の株価チャートアプリだと、こんなコードになりました。
呼び出すだけなので簡単ですね。




