これは AntiAlias に関するものではありません。回答する前に質問をお読みください。
報奨金を追加する--> androidは、テキストの幅(ピクセル単位)を画面の幅/高さのパーセントに変換します
品質情報 --> https://stackoverflow.com/a/1016941/1815624
キャンバスにテキストを描画しようとすると、一貫性のない結果が得られます。助けてください、ありがとう。
テキストがすべてのデバイスで同じ量のスケーリングされたスペースを消費するようにしたい
私はANTI_ALIASを気にせず、追加しましたpaint.setFlags(Paint.ANTI_ALIAS_FLAG);
が、問題は同じです...
ある画面では、テキストは幅の半分を消費し、別の画面では 1/3 しか消費せず、全幅を使用する画面さえあります。
私は、それらすべてが同じ量の画面領域を使用することを望んでいます。
例えば
1600X900 7 インチ タブレット キットカット 物理:
1600x900 20 インチ Lollipop エミュレート
これらは、http://www.gkproggy.com/2013/01/draw-text-on-canvas-with-font-size.htmlのガイドを使用して作成されています。
ここで徹底的にするために、ソースは次のとおりです。
public class MainActivity extends Activity
{
Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
paint = new Paint();
View test = new TestView(this);
setContentView(test);
}
public class TestView extends View
{
public TestView(Context context)
{
super(context);
setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
}
public float pixelsToSp(Context context, float px) {
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}
public float spToPixels(float sp) {
Context context = getContext();
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return scaledDensity*sp;
}
@Override
protected void onDraw(Canvas canvas)
{
int size = getResources().getDimensionPixelSize(R.dimen.sp20);
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics());
Log.v("intSize", Integer.toString(size));
Log.v("intSize", Integer.toString(px));
Log.v("intSize", Float.toString(spToPixels(20f)));
if(true) {
Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/Ultra.ttf");
paint.setTypeface(myTypeface);
}
paint.setColor(Color.BLACK);
paint.setTextSize(size);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
canvas.drawText("HELLOOOOOOOOOOOOOO!", 0, size, paint);
super.onDraw(canvas);
}
}
}
https://stackoverflow.com/a/5369766/1815624から提案を試みました
これを調べると
https://stackoverflow.com/a/21895626/1815624