服务器之家

服务器之家 > 正文

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

时间:2021-05-28 15:43     来源/作者:bigconvience

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

1 取词放大控件

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

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

2 代码示例

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

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

3 实现原理

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

① wordview

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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程序设计有所帮助。

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部