我想顯示文本(相對較大)並確定用戶觸摸哪個字符。我還想通過在某些角色上畫一個圓圈來修飾文字。我怎麼知道哪個角色在哪個位置?如果以編程方式提供幫助,強制使用等寬字體將會很好。Android動態文本繪圖/觸摸檢測
它也能夠使這一行文本向左/向右滾動(使用觸摸 - >幻燈片),並仍然有觸摸工作來確定正確的字符?
我想顯示文本(相對較大)並確定用戶觸摸哪個字符。我還想通過在某些角色上畫一個圓圈來修飾文字。我怎麼知道哪個角色在哪個位置?如果以編程方式提供幫助,強制使用等寬字體將會很好。Android動態文本繪圖/觸摸檢測
它也能夠使這一行文本向左/向右滾動(使用觸摸 - >幻燈片),並仍然有觸摸工作來確定正確的字符?
一個很廣泛的問題,你有很多工作要做,但這裏的一個可能的解決方案大綱:
創建一個自定義視圖。 ImageView通常是一個很好的基類,可以繼承 。
重寫視圖的onDraw()方法。
使用canvas.drawText()將您的文本放置在屏幕上。
使用paint.getTextBounds來測量文本。請參閱下面鏈接的討論 以獲得全面瞭解。由於您在屏幕上繪製了文字 ,並且您測量了它,所以您確切知道每個字符的位置。
覆蓋自定義視圖中的onTouch()方法並跟蹤所需的 事件。在這裏有許多QA如何做到這一點。
對於滾動文本,請使用您在onTouch()中計算的運動 使用canvas.translate()。既然你知道你有多少滾動(翻譯),你知道你的角色已經移動了多遠 並且可以抵消你的觸摸檢測以檢測字符觸摸。
最後,因爲你現在控制所有的繪圖和,你 字符位置是抽象的,相比 到觸摸位置時,只有具有意義,你可以以任何方式選擇美化他們。
Android Paint: .measureText() vs .getTextBounds()
唷!
祝你好運。
我還沒有開始這個,但我確實嘗試「調查」可能的選項。你的答案似乎符合適當的解決方案,因此標記爲答案。我認爲我唯一可能會分歧的部分是使用ScrollView,而不是自己實現翻譯。我希望觸摸仍然會在滾動視圖內提供適當的自定義視圖/畫布座標。 我打算在此回報什麼對我有用。 – Joel