android 桌面图标的点击放大效果,Android仿英语流利说取词放大控件的实现方法(附demo源码下载)...

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

1 取词放大控件

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

8890f9a36c011b8e14237b249bd93af5.png

2 代码示例

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

6029261ec7f4a4dfe6aadec955fe3216.png

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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值