2012-09-23 43 views
1

我想顯示文本(相對較大)並確定用戶觸摸哪個字符。我還想通過在某些角色上畫一個圓圈來修飾文字。我怎麼知道哪個角色在哪個位置?如果以編程方式提供幫助,強制使用等寬字體將會很好。Android動態文本繪圖/觸摸檢測

它也能夠使這一行文本向左/向右滾動(使用觸摸 - >幻燈片),並仍然有觸摸工作來確定正確的字符?

回答

1

一個很廣泛的問題,你有很多工作要做,但這裏的一個可能的解決方案大綱:

  • 創建一個自定義視圖。 ImageView通常是一個很好的基類,可以繼承 。

    重寫視圖的onDraw()方法。

    使用canvas.drawText()將您的文本放置在屏幕上。

    使用paint.getTextBounds來測量文本。請參閱下面鏈接的討論 以獲得全面瞭解。由於您在屏幕上繪製了文字 ,並且您測量了它,所以您確切知道每個字符的位置。

    覆蓋自定義視圖中的onTouch()方法並跟蹤所需的 事件。在這裏有許多QA如何做到這一點。

    對於滾動文本,請使用您在onTouch()中計算的運動 使用canvas.translate()。既然你知道你有多少滾動(翻譯),你知道你的角色已經移動了多遠 並且可以抵消你的觸摸檢測以檢測字符觸摸。

    最後,因爲你現在控制所有的繪圖和,你 字符位置是抽象的,相比 到觸摸位置時,只有具有意義,你可以以任何方式選擇美化他們。

Android Paint: .measureText() vs .getTextBounds()

唷!

祝你好運。

+0

我還沒有開始這個,但我確實嘗試「調查」可能的選項。你的答案似乎符合適當的解決方案,因此標記爲答案。我認爲我唯一可能會分歧的部分是使用ScrollView,而不是自己實現翻譯。我希望觸摸仍然會在滾動視圖內提供適當的自定義視圖/畫布座標。 我打算在此回報什麼對我有用。 – Joel