Android仿英语流利说取词放大控件的实现方法(附demo源码下载)

 更新时间:2016年02月15日 11:23:51   作者:bigconvience  
这篇文章主要介绍了Android仿英语流利说取词放大控件的实现方法,较为详细的分析了取词放大控件的实现步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了Android仿英语流利说取词放大控件的实现方法。分享给大家供大家参考,具体如下:

1 取词放大控件

英语流利说是一款非常帮的口语学习app,在app的修炼页面长按屏幕,会弹出一个放大镜,当手指移到某个单词的附近,可以看到该英文单词会被选中,效果如下图所示:

2 代码示例

该控件挺有意思,于是我写了个简单的demo,完整实例代码点击此处本站下载。,程序运行后的效果如下:

3 实现原理

该控件的实现原理比较简单,下面介绍几个比较重要的类

① WordView

在实习该控件的过程中,我发现看似普通的TextView,其功能异常的强大,TextView的源码值得研究。WordView的主要功能是根据touch的位置,选择其附近的单词,然后更改选中单词的颜色,关键代码如下:

public void trySelectWord(MotionEvent event) {
  Layout layout = getLayout();
  if (layout == null) {
    return;
  }
  int line = layout.getLineForVertical(getScrollY() + (int) event.getY());
  final int index = layout.getOffsetForHorizontal(line, (int) event.getX());
  Word selectedWord = getWord(index);
  if (selectedWord != null) {
    mSpannableString.setSpan(mForegroundColorSpan,
        selectedWord.getStart(), selectedWord.getEnd(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    setText(mSpannableString);
    mSelectedWord = getText().subSequence(selectedWord.getStart(), selectedWord.getEnd()).toString();
    mOnWordSelectListener.onWordSelect();
  }
}

② ExercisePanel

该控件主要用来显示放大镜,原理比较简单,就不介绍了。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android资源操作技巧汇总》《Android开发入门与进阶教程》、《Android控件用法总结》、《Android短信与电话操作技巧汇总》及《Android多媒体操作技巧汇总(音频,视频,录音等)

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • 基于Android SQLite的使用介绍

    基于Android SQLite的使用介绍

    本篇文章小编为大家介绍,基于Android SQLite的使用说明,需要的朋友参考下
    2013-04-04
  • Android新建Activity的方法

    Android新建Activity的方法

    这篇文章主要介绍了Android新建Activity的方法,结合实例形式分析了Android新建Activity的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-04-04
  • Android 解决ScrollView嵌套CridView显示问题

    Android 解决ScrollView嵌套CridView显示问题

    这篇文章主要介绍了Android 解决ScrollView嵌套CridView显示问题的相关资料,使用ScrollView嵌套CridView的时候会出现显示不全的问题,这里提供解决办法,需要的朋友可以参考下
    2017-08-08
  • 关于android studio升级4.1 某些插件使用不了的问题(Mac)

    关于android studio升级4.1 某些插件使用不了的问题(Mac)

    这篇文章主要介绍了关于android studio升级4.1 某些插件使用不了的问题(Mac),本文给大家分享解决方法供大家参考,感兴趣的朋友跟随小编一起看看吧
    2020-10-10
  • Android显式启动与隐式启动Activity的区别介绍

    Android显式启动与隐式启动Activity的区别介绍

    为什么要写显式启动与隐式启动Activity,Android的Acitivity启动大致有两种方式:显式启动与隐式启动,下面分别介绍
    2014-09-09
  • 一文吃透Android如何处理全局异常

    一文吃透Android如何处理全局异常

    这篇文章主要为大家详细介绍了Android中处理全局异常的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • Flutter适配深色模式的方法(DarkMode)

    Flutter适配深色模式的方法(DarkMode)

    这篇文章主要介绍了Flutter适配深色模式的方法(DarkMode),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Android基于OpenCV实现图像脱色

    Android基于OpenCV实现图像脱色

    脱色是将彩色图像转换为灰度图像的过程。同时,它也是数字打印,风格化的黑白照片渲染以及许多单通道图像处理应用程序中的基本工具。本文讲述基于OpenCV实现图像脱色的步骤
    2021-06-06
  • Android编程实现只显示图片一部分的方法

    Android编程实现只显示图片一部分的方法

    这篇文章主要介绍了Android编程实现只显示图片一部分的方法,涉及Android针对图片的局部显示操作技巧,需要的朋友可以参考下
    2016-10-10
  • Android仿微信实现下拉列表

    Android仿微信实现下拉列表

    这篇文章主要介绍了Android仿微信实现下拉列表的相关资料,需要的朋友可以参考下
    2015-12-12

最新评论