本文執行個體講述了Android仿英語流利說取詞放大控制項的實現方法。分享給大家供大家參考,具體如下:
1 取詞放大控制項
英語流利說是一款非常幫的口語學習app,在app的修鍊頁面長按螢幕,會彈出一個放大鏡,當手指移到某個單詞的附近,可以看到該英文單詞會被選中,效果如下圖所示:
2 程式碼範例
該控制項挺有意思,於是我寫了個簡單的demo,完整執行個體代碼點擊此處本站下載。,程式運行後的效果如下:
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相關內容感興趣的讀者可查看本站專題:《Android資源操作技巧匯總》《Android開發入門與進階教程》、《Android控制項用法總結》、《Android簡訊與電話操作技巧匯總》及《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》
希望本文所述對大家Android程式設計有所協助。