• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

android - Android EditText (TextView) 如何绘制闪烁的光标?

[复制链接]
菜鸟教程小白 发表于 2022-11-6 16:15:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在通过扩展View 从头开始​​制作我自己的蒙古文垂直脚本TextView(和EditText)。我试图了解闪烁光标是如何在 Android TextView source code 中实现的。 .它似乎由 Editor classmEditor 实例处理。 .在那个类中,我找到了一个 drawCursor 方法:

private void drawCursor(Canvas canvas, int cursorOffsetVertical) {
    final boolean translate = cursorOffsetVertical != 0;
    if (translate) canvas.translate(0, cursorOffsetVertical);
    for (int i = 0; i < mCursorCount; i++) {
        mCursorDrawable[i].draw(canvas);
    }
    if (translate) canvas.translate(0, -cursorOffsetVertical);
}

显然,光标本身是 Drawable某种类型的。

所以我正在寻找 fragment ,但我无法透过树木看到森林。谁能比我更了解这一点,能用简单的英语告诉我闪烁光标的工作原理吗?

以下是一些我不太明白的具体点:

  • 光标与TextView(或EditText)、LayoutEditor的关系可绘制.
  • 每次光标闪烁时,是重绘所有文本还是仅重绘光标区域?

注意:

接受的答案回答了我提出的问题。但是,如果有人可以添加更规范的答案来更详细地解释事情,我会很乐意接受不同的答案。



Best Answer-推荐答案


  1. EditText 只是可编辑的TextViewLayout 用于测量、计算、文本的布局位置和方式。 Drawable 只是为了保持光标的外观,稍后在 Canvas 上绘制。
  2. 只有光标Pathinvalidated .

闪烁基本上是递归的 RunnableHandler 每 500 毫秒(猜测)执行一次,以开关方式,并在 EditText 时重新调度> 有焦点。这也可以通过循环 int 的 ValueAnimator 来实现,其中光标可绘制 alpha 将在 0 和 255 之间切换。

关于android - Android EditText (TextView) 如何绘制闪烁的光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43152866/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap