Android:Paint.breakText(...) 不准确吗?

2023-12-08

我有一个视图,它绘制一个矩形,其中包含一行文本。视图使用分隔文本来确保没有文本延伸到矩形之外;它会忽略任何这样做的文本。这对于某些字符来说效果很好,但通常由“l”和“f”组成的字符串会延伸到矩形之外。所以,我需要在这里进行健全性检查:下面的代码是否存在一些明显的缺陷,或者 Paint.breakText(...) 是否可能不准确?

public void onDraw(Canvas canvas)
{
    int MARGIN = 1;
    int BORDER_WIDTH = 1;

    Paint p = new Paint();
    p.setAntiAlias(true);
    p.setTextSize(12);
    p.setTypeface(Typeface.create(Typeface.SERIF, Typeface.NORMAL));

    RectF rect = getRect();

    float maxWidth = rect.width() - MARGIN - BORDER_WIDTH * 2;

    String str = getText();
    char[] chars = str.toCharArray();
    int nextPos = p.breakText(chars, 0, chars.length, maxWidth, null);
    str = str.substring(0, nextPos);

    float textX = MARGIN + BORDER_WIDTH;
    float textY = (float) (Math.abs(p.getFontMetrics().ascent) + BORDER_WIDTH + MARGIN);

    canvas.drawText(str, textX, textY, p);

    p.setStrokeWidth(BORDER_WIDTH);
    p.setStyle(Style.STROKE);

    canvas.drawRect(rect, p);
}

这是通过以下方法修复的:Paint.setSubpixelText(true);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:Paint.breakText(...) 不准确吗? 的相关文章

  • 使用 xamarin 和 c# 更改 android 上的cultureinfo

    我调用自定义方法来动态地将当前文化信息切换为法语 fr 像这样 但在调用该方法后 我的 Android 应用程序仍然使用默认区域性 en 但在调试模式下 区域性似乎没问题 我的文件夹没问题 我两者都有 并且字符串值已配置 文件夹 resou
  • OpenGL ES 2.0 中的透明对象

    所以我一直在 Android 上使用 OpenGL ES 2 0 但现在遇到了一个我无法解决的问题 提前道歉 看来我还不能发布两个以上的链接 所以我把我的三张图片放在 Photobucket 相册中 我正在尝试创建一个由透明区域 彩色玻璃
  • 使用 setMessage() 在 AlertDialog 中显示多行文本和变量

    我需要在警报对话框中显示多行文本 如果我使用多个 setMessage 方法 则仅显示最后一个 setMessage 如下所示 final AlertDialog alertDialog new AlertDialog Builder th
  • 浮动操作按钮动画

    当 fab 出现时 它使用动画中的比例进行动画处理 当它隐藏时 它使用向外扩展动画 因此 它是一个缩小和缩小的动画 这个动画要怎么制作呢 从 Zielony 的回答来看 我完全按照我想要的方式制作了它 下面是正确应用效果的代码 scale
  • Android Chrome 忽略 -webkit-text-size-adjust:none 属性。缩小时文本会缩放

    我们的客户请求一个网站 但不想支付移动版本的费用 我们仍在使其在移动设备上运行 当完全缩小时 Android 4 0 上的 Chrome 会缩放一堆文本 我们尝试设置 webkit text size adjust none 属性 但它似乎
  • Android 设备与本地 API 服务器通信

    我想知道如何在外部设备上模拟我的 Android 应用程序 以便与我的计算机上运行的本地 API 服务器进行通信 该应用程序使用 cordova 并使用 USB 连接在 Android 设备上运行 我正在本地运行 API 服务器 使用我的机
  • FirebaseAuth - 让用户使用任何提供商更改密码 - Android

    我有一个社交媒体应用程序 我正在使用FirebaseUI让用户使用电子邮件 Google 或 Facebook 登录 注册应用程序 如果使用 电子邮件 作为密码 我怎样才能让用户稍后更改他 她的密码 提供商 如果使用 Facebook 或
  • Kotlin Android 视图绑定:findViewById、Butterknife 与 Kotlin Android 扩展

    我正在尝试找出在 Kotlin 中进行 Android 视图绑定的最佳方法 似乎有一些选择 按Id查找视图 val button Button by lazy findViewById
  • 来自 InputStream 的 Android 通用图像加载器 URI

    我想问一下UIL URI是从InputStream输入的 因为我的图像源来自 ZIP 然后我必须提取它才能显示该图像 因为图像太大 我必须使用UIL库 任何人都知道如何从InputStream插入UIL 我认为你可以这样做类似于从数据库加载
  • 使用 android-async-http (loopj) 发布 JSON/XML

    我在用android async http http loopj com android async http 并且真的很喜欢它 我在发布数据时遇到了问题 我必须按照以下格式将数据发布到 API
  • LibGDX 闪烁

    我已经使用 LibGDX UI 设置来启动一个项目 我在实现 ApplicationListener 中唯一拥有的是 public void create setScreen new LoadingScreen this 这应该会触发 Lo
  • 如何在phonegap中同时使用相机API选择多个图像?

    如何同时选择或拾取多个图像phonegap camera API使用时Camera DestinationType FILE URI 我一次只能选择一张图像 我可以使用以下命令在 SD 卡中选择多个文件 包括 txt pdf this ht
  • 无法将图像从 url 存储到 SD 卡

    我想将图像存储在 mnt sdcard 中 package com Downld file frm net import java io BufferedInputStream import java io File import java
  • 是否可以自定义首选项标题布局?

    我发现了类似的问题 但找不到最新的具体答案 我在用着
  • 从最近打开的应用程序中打开 Android 中的旧活动?

    我有 4 个活动 Launcher MainActivity SingleTask NotificationActivity ExampleActivity 当用户点击通知时 通知活动然后打开示例活动并完成通知活动 当我按下回键时主要活动打
  • Android AsyncTask 第二次调用时未执行

    我有一个扩展 AsyncTask 的类 public class SendJSONArray2Server extends AsyncTask
  • Web 服务凭证 - OpenID/Android AccountManager?

    我正在构建一个网络服务 并想使用用户的谷歌帐户凭据 该服务在 GAE 上运行 并将有一个 Web 客户端和一个 Android 本机客户端 这是我第一次尝试类似的事情 我一直在阅读有关 OpenID 和 Android AccountMan
  • 当 SystemUI 在 Android Boot 中加载时

    如何知道系统 UI 何时加载Android启动过程 状态栏和导航栏视图到底绘制在哪里 作为SystemUI是一个特权应用程序 那么它是否在启动器应用程序 主屏幕 启动之前加载 我不知道 欢迎任何建议 下面是一系列简要解释的步骤 希望能够阐明
  • Android 开发:seekbar 倒计时!

    是否有可能 如果是 如何 如何在用户不执行任何操作的情况下从进度 100 变为 1 就像每0 05秒seekbar setProgress 1 因此 如果用户不执行任何操作 搜索栏就会下降 直到达到 1 请回答如何做到这一点 谢谢 clas
  • 从 SD 卡读取 pdf 文件

    我想阅读存储在 SD 卡中的 pdf 文件 我尝试使用此代码片段 File file new File Environment getExternalStorageDirectory vvveksperten ypc pdf Package

随机推荐