ЭТО НЕ О AntiAlias, Пожалуйста, прочитайте вопрос, прежде чем ответить спасибо.canvas.drawText с пиксельным текстом на холсте
ДОБАВЛЕНИЕ BOUNTY TO ->android convert text width (in pixels) to percent of screen width/height
Качество Информация ->https://stackoverflow.com/a/1016941/1815624
Я получаю противоречивые результаты при попытке нарисовать текст на холсте. Пожалуйста, помогите, спасибо.
Я хочу, чтобы текст, чтобы потреблять такое же количество масштабируемого пространства на всех устройствах
Я не заботятся о ANTI_ALIAS и добавили paint.setFlags(Paint.ANTI_ALIAS_FLAG);
но проблема та же ...
1 экран текст потребляет половину ширины, а другой - только 1/3 и даже один, который использует полную ширину.
Я хочу, чтобы все они использовали равное количество экранной недвижимости.
Для примера
1600x900 7inch таблетки Kitkat физическое:
1920,1080 5,2 KitKat физический
1600x900 20in леденец эмулировать
Они были созданы с помощью руководства по 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);
}
}
}
I попробовали предложение от https://stackoverflow.com/a/5369766/1815624
Глядя в этот
https://stackoverflow.com/a/21895626/1815624
https://stackoverflow.com/a/14753968/1815624
https://stackoverflow.com/a/21895626/1815624 < - пытается в настоящее время
Я не знаю, что вы просите, но, чтобы получить «гладкий» краями вы можете установить сглаживание на true на объект рисования –
Я хочу, чтобы текст потреблял одинаковое количество масштабированного пространства на всех устройствах – CrandellWS
Это похоже на t эй, делай. Вы хотите, чтобы они охватывали один и тот же * процент * ширины/высоты экрана или что они одного размера, если вы измеряли их линейкой? –