1

テキスト (比較的大きい) を表示し、ユーザーがタッチした文字を判別したい。また、特定の文字の上に (たとえば) 円を描いて、テキストを装飾したいと思います。どのキャラクターがどの位置にいるのかを知るにはどうすればよいですか? プログラム的に役立つ場合は、等幅フォントを強制しても問題ありません。

また、この 1 行のテキストを左右にスクロールさせ (タッチ -> スライドを使用)、正しい文字を決定するためにタッチ作業を行うこともできますか?

4

1 に答える 1

1

非常に幅広い質問であり、多くの作業が必要ですが、考えられる解決策の概要は次のとおりです。

  • カスタムビューを作成します。多くの場合、ImageViewは継承するのに適した基本クラスです。

    ビューのonDraw()メソッドをオーバーライドします。

    canvas.drawText()を使用して、テキストを画面に配置します。

    paint.getTextBoundsを使用して、テキストを測定します。完全な理解については、以下にリンクされているディスカッションを参照してください。画面にテキストを描き、それを測定したので、各文字がどこにあるかを正確に知ることができます。

    カスタムビューのonTouch()メソッドをオーバーライドし、必要なイベントを追跡します。これを行う方法については、SOに多くのQAがあります。

    テキストをスクロールするには、onTouch()で計算した動きを使用してcanvas.translate()を使用します。スクロール(翻訳)した量がわかっているので、キャラクターがどれだけ移動したかがわかり、タッチ検出をオフセットしてキャラクターのタッチを検出できます。

    最後に、すべての描画を制御できるようになり、キャラクターの位置は抽象的で、タッチ位置と比較した場合にのみ意味を持つため、任意の方法で装飾することができます。

Androidペイント:.measureText()と.getTextBounds()

ふぅ!

幸運を。

于 2012-09-23T05:24:19.720 に答える