Canvas 上的 Android 文本

标签 android android-widget android-canvas

我创建了一个 Canvas 。我在 Canvas 上画文字。但是当我在不同版本的 android 上测试时,文本看起来不同。版本 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 上看起来比 android 4.0.3 大。

最佳答案

这可能是因为屏幕密度不同。

我想 Paint.setTextSize() 以像素为单位而不是 dp。要在所有设备上以英寸为单位显示相同的大小,您必须决定要以 dp 为单位显示的文本大小,并将该值转换为像素。

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

// Get the screen's 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);

关于 Canvas 上的 Android 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743098/

相关文章:

java - 如何从另一个线程正确且适本地访问 SQLite 数据库 - Android

java - 以编程方式添加组件的样式与 XML 布局中的样式不同

java - 在 tabWidget 中跳过一行

Android - 用于 onDraw 的预绘制 Canvas

android - canvas.drawRect 是黑色而不是透明的

java - 检查 SIM 卡结果出现误报

android - Android 2.3.5 上的 ActionBar 和 SearchView 问题

android - 在 android 中删除 VrPanoramaView 纸板标签

安卓 : How to use custom view in Widget [Remote Views]

java - 将元素添加到列表时 Android 应用程序崩溃