html5中文学习网

您的位置: 首页 > android » 正文

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

[ ] 已经帮助:人解决问题

本文实例讲述了Android仿英语流利说取词放大控件的实现方法。分享给大家供大家参考,具体如下:7wDHTML5中文学习网 - HTML5先行者学习网

1 取词放大控件7wDHTML5中文学习网 - HTML5先行者学习网

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

7wDHTML5中文学习网 - HTML5先行者学习网

2 代码示例7wDHTML5中文学习网 - HTML5先行者学习网

该控件挺有意思,于是我写了个简单的demo,完整实例代码点击此处本站下载。,程序运行后的效果如下:7wDHTML5中文学习网 - HTML5先行者学习网

7wDHTML5中文学习网 - HTML5先行者学习网

3 实现原理7wDHTML5中文学习网 - HTML5先行者学习网

该控件的实现原理比较简单,下面介绍几个比较重要的类7wDHTML5中文学习网 - HTML5先行者学习网

① WordView7wDHTML5中文学习网 - HTML5先行者学习网

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

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();  }}

② ExercisePanel7wDHTML5中文学习网 - HTML5先行者学习网

该控件主要用来显示放大镜,原理比较简单,就不介绍了。7wDHTML5中文学习网 - HTML5先行者学习网

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

希望本文所述对大家Android程序设计有所帮助。7wDHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助