Android仿英語流利說取詞放大控件的實現(xiàn)方法(附demo源碼下載)
本文實例講述了Android仿英語流利說取詞放大控件的實現(xiàn)方法。分享給大家供大家參考,具體如下:
1 取詞放大控件
英語流利說是一款非常幫的口語學(xué)習(xí)app,在app的修煉頁面長按屏幕,會彈出一個放大鏡,當(dāng)手指移到某個單詞的附近,可以看到該英文單詞會被選中,效果如下圖所示:
2 代碼示例
該控件挺有意思,于是我寫了個簡單的demo,完整實例代碼點擊此處本站下載。,程序運行后的效果如下:
3 實現(xiàn)原理
該控件的實現(xiàn)原理比較簡單,下面介紹幾個比較重要的類
① WordView
在實習(xí)該控件的過程中,我發(fā)現(xiàn)看似普通的TextView,其功能異常的強大,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
該控件主要用來顯示放大鏡,原理比較簡單,就不介紹了。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android資源操作技巧匯總》《Android開發(fā)入門與進階教程》、《Android控件用法總結(jié)》、《Android短信與電話操作技巧匯總》及《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android編程實現(xiàn)圖標(biāo)拖動效果的方法
- Android編程實現(xiàn)圖片的瀏覽、縮放、拖動和自動居中效果
- android連續(xù)拖動導(dǎo)致掛起的解決方法
- 在android中實現(xiàn)類似uc和墨跡天氣的左右拖動效果
- android 添加隨意拖動的桌面懸浮窗口
- Android編程實現(xiàn)改變控件背景及形態(tài)的方法
- Android自定義播放器控件VideoView
- 詳解Android自定義控件屬性TypedArray以及attrs
- Android自定義控件樣式實例詳解
- Android 自定義彈性ListView控件實例代碼(三種方法)
- Android編程之控件可拖動的實現(xiàn)方法
相關(guān)文章
Android中系統(tǒng)自帶鎖WalkLock與KeyguardLock用法實例詳解
這篇文章主要介紹了Android中系統(tǒng)自帶鎖WalkLock與KeyguardLock用法,結(jié)合實例形式較為詳細(xì)的分析了WalkLock與KeyguardLock的功能、作用、使用方法與相關(guān)注意事項,需要的朋友可以參考下2016-01-01Android 幾種屏幕間跳轉(zhuǎn)的跳轉(zhuǎn)Intent Bundle
這篇文章主要介紹了Android 幾種屏幕間跳轉(zhuǎn)的跳轉(zhuǎn)Intent Bundle,有需要的朋友可以參考一下2013-12-12Android編程動態(tài)修改RelativeLayout寬高的方法
這篇文章主要介紹了Android編程動態(tài)修改RelativeLayout寬高的方法,涉及Android動態(tài)布局的相關(guān)技巧,需要的朋友可以參考下2015-12-12Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡)
這篇文章主要介紹了Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡)的相關(guān)資料,需要的朋友可以參考下2018-02-02Android UI設(shè)計系列之ImageView實現(xiàn)ProgressBar旋轉(zhuǎn)效果(1)
這篇文章主要為大家詳細(xì)介紹了Android UI設(shè)計之ImageView實現(xiàn)ProgressBar旋轉(zhuǎn)效果,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下2016-06-06Android Studio下的APP目錄結(jié)構(gòu)詳解
這篇文章主要介紹了AndroidStudio下的APP目錄結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05