源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-10-14 05:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android仿英语流利说取词放大控件的实现方法(附demo源码下载)
本文实例讲述了Android仿英语流利说取词放大控件的实现方法。分享给大家供大家参考,具体如下: [b]1 取词放大控件[/b] 英语流利说是一款非常帮的口语学习app,在app的修炼页面长按屏幕,会弹出一个放大镜,当手指移到某个单词的附近,可以看到该英文单词会被选中,效果如下图所示: [img]http://files.jb51.net/file_images/article/201602/2016215111754335.jpg?2016115111938[/img] [b]2 代码示例[/b] 该控件挺有意思,于是我写了个简单的demo,完整实例代码点击此处[url=http://xiazai.jb51.net/201602/yuanma/Android-WordMagnifier-master(jb51.net).rar]本站下载[/url]。,程序运行后的效果如下: [img]http://files.jb51.net/file_images/article/201602/2016215111945627.jpg?2016115112244[/img] [b]3 实现原理[/b] 该控件的实现原理比较简单,下面介绍几个比较重要的类 ① 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相关内容感兴趣的读者可查看本站专题:《[url=http://www.1sucai.cn/Special/423.htm]Android资源操作技巧汇总[/url]》《[url=http://www.1sucai.cn/Special/410.htm]Android开发入门与进阶教程[/url]》、《[url=http://www.1sucai.cn/Special/124.htm]Android控件用法总结[/url]》、《[url=http://www.1sucai.cn/Special/394.htm]Android短信与电话操作技巧汇总[/url]》及《[url=http://www.1sucai.cn/Special/398.htm]Android多媒体操作技巧汇总(音频,视频,录音等)[/url]》 希望本文所述对大家Android程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部