0

Activity含む がImageViewあり、ユーザーがそのコンテンツの一部をタッチ (またはマウス クリック) 機能で選択できるようにしたいと考えています。

次の 2 つのことを達成できる手順を書きたいと思います。

  1. 画像の選択した部分の上にハイライトされたウィンドウを描画します
  2. 選択された (強調表示された) ピクセルの座標を含むオブジェクトを返します。

理解を深めるために、私が作成した小さなモックアップを確認してください。

ここに画像の説明を入力

ユーザーが画面の画像の一部に触れると、強調表示されます。戻るボタンを押すと、強調表示されたピクセルの座標を Java 経由で取得したいと思います。

方法を理解するのを手伝ってもらえますか?

特に、次のことを知りたいです。

  1. 画像のピクセルレベルの情報にアクセスする必要がありますか?
  2. この機能を実装するには、どのクラスが必要ですか?
  3. 疑似コードのアイデア?

どんな種類の助けにも感謝します!

4

1 に答える 1

1

サブクラス化ImageViewすると、オーバーライドしてタッチイベントをキャプチャできますonTouchEvent(...)

メソッドに到達したら、onDraw(...)super を呼び出して通常どおり画像を描画し、独自のコードを追加して上部にハイライトを描画します。

編集

使用ImageViewする代わりに、それを拡張して独自のクラスを作成できます。このクラスで行う必要があるのはオーバーライドonTouchEvent(...)だけなので、ビューがいつタッチされているかを知り、タッチ イベントの画面上の場所を保存できます。次に、描画方法を編集します。

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas); // So the image you want is drawn as normal

    myMethodForDrawingAFancyHighlight(Canvas canvas); // add your special effects on top of the image
}
于 2012-07-03T13:12:29.653 に答える