Android текст на холсте

1

Я создал холст. И я рисую текст на холсте. Но когда я тестирую разные версии андроида, текст выглядит по-другому. Разница между версией 4.х и 2.2.

    Bitmap btmText = Bitmap.createBitmap(140, 90, Bitmap.Config.ARGB_4444);
    Canvas cnvText = new Canvas(btmText);
    Typeface tf = tf = Typeface.createFromAsset(context.getAssets(),"fonts/font.ttf");

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setSubpixelText(true);
    paint.setTypeface(tf);
    paint.setTextSize(50);
    cnvText.drawText(text, 0, 5, 0, 55, paint);

Текст выглядит больше на Android 2.2, чем андроид 4.0.3.

  • 2
    Это на одном устройстве?
  • 0
    нет. Android 2.2 является эмулятором с разрешением 240 точек на дюйм, Android 4.0.3 является Nexus S.
Теги:
android-canvas
android-widget

1 ответ

5
Лучший ответ

Возможно, это связано с различной плотностью экрана.

Я предполагаю, что Paint.setTextSize() занимает размер в пикселях, а не в dp. Чтобы отобразить один и тот же размер в дюймах между устройствами, вам нужно будет определить размер текста, который вы хотите отобразить в dp, и преобразовать это значение в пиксели.

// The TEXT SIZE expressed in dp
private static final float MYTEXTSIZE = 50.0f;

// Get the screen density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
textSizePx = (int) (MYTEXTSIZE * scale + 0.5f);

paint.setTextSize(textSizePx);
  • 0
    Ой !! Это выглядит намного лучше, спасибо
  • 0
    paint.setTextSize() принимает только аргумент с плавающей точкой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню