Android仿英語(yǔ)流利說(shuō)取詞放大控件的實(shí)現(xiàn)方法(附demo源碼下載)
本文實(shí)例講述了Android仿英語(yǔ)流利說(shuō)取詞放大控件的實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
1 取詞放大控件
英語(yǔ)流利說(shuō)是一款非常幫的口語(yǔ)學(xué)習(xí)app,在app的修煉頁(yè)面長(zhǎng)按屏幕,會(huì)彈出一個(gè)放大鏡,當(dāng)手指移到某個(gè)單詞的附近,可以看到該英文單詞會(huì)被選中,效果如下圖所示:

2 代碼示例
該控件挺有意思,于是我寫(xiě)了個(gè)簡(jiǎn)單的demo,完整實(shí)例代碼點(diǎn)擊此處本站下載。,程序運(yùn)行后的效果如下:

3 實(shí)現(xiàn)原理
該控件的實(shí)現(xiàn)原理比較簡(jiǎn)單,下面介紹幾個(gè)比較重要的類(lèi)
① WordView
在實(shí)習(xí)該控件的過(guò)程中,我發(fā)現(xiàn)看似普通的TextView,其功能異常的強(qiáng)大,TextView的源碼值得研究。WordView的主要功能是根據(jù)touch的位置,選擇其附近的單詞,然后更改選中單詞的顏色,關(guān)鍵代碼如下:
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
該控件主要用來(lái)顯示放大鏡,原理比較簡(jiǎn)單,就不介紹了。
更多關(guān)于A(yíng)ndroid相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android資源操作技巧匯總》《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android控件用法總結(jié)》、《Android短信與電話(huà)操作技巧匯總》及《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android編程實(shí)現(xiàn)圖標(biāo)拖動(dòng)效果的方法
- Android編程實(shí)現(xiàn)圖片的瀏覽、縮放、拖動(dòng)和自動(dòng)居中效果
- android連續(xù)拖動(dòng)導(dǎo)致掛起的解決方法
- 在android中實(shí)現(xiàn)類(lèi)似uc和墨跡天氣的左右拖動(dòng)效果
- android 添加隨意拖動(dòng)的桌面懸浮窗口
- Android編程實(shí)現(xiàn)改變控件背景及形態(tài)的方法
- Android自定義播放器控件VideoView
- 詳解Android自定義控件屬性TypedArray以及attrs
- Android自定義控件樣式實(shí)例詳解
- Android 自定義彈性L(fǎng)istView控件實(shí)例代碼(三種方法)
- Android編程之控件可拖動(dòng)的實(shí)現(xiàn)方法
相關(guān)文章
Android 解決ScrollView嵌套CridView顯示問(wèn)題
這篇文章主要介紹了Android 解決ScrollView嵌套CridView顯示問(wèn)題的相關(guān)資料,使用ScrollView嵌套CridView的時(shí)候會(huì)出現(xiàn)顯示不全的問(wèn)題,這里提供解決辦法,需要的朋友可以參考下2017-08-08
關(guān)于android studio升級(jí)4.1 某些插件使用不了的問(wèn)題(Mac)
這篇文章主要介紹了關(guān)于android studio升級(jí)4.1 某些插件使用不了的問(wèn)題(Mac),本文給大家分享解決方法供大家參考,感興趣的朋友跟隨小編一起看看吧2020-10-10
Android顯式啟動(dòng)與隱式啟動(dòng)Activity的區(qū)別介紹
為什么要寫(xiě)顯式啟動(dòng)與隱式啟動(dòng)Activity,Android的Acitivity啟動(dòng)大致有兩種方式:顯式啟動(dòng)與隱式啟動(dòng),下面分別介紹2014-09-09
Android基于OpenCV實(shí)現(xiàn)圖像脫色
脫色是將彩色圖像轉(zhuǎn)換為灰度圖像的過(guò)程。同時(shí),它也是數(shù)字打印,風(fēng)格化的黑白照片渲染以及許多單通道圖像處理應(yīng)用程序中的基本工具。本文講述基于OpenCV實(shí)現(xiàn)圖像脫色的步驟2021-06-06
Android編程實(shí)現(xiàn)只顯示圖片一部分的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)只顯示圖片一部分的方法,涉及Android針對(duì)圖片的局部顯示操作技巧,需要的朋友可以參考下2016-10-10

