2

ImageButtons として作成された不規則な形状のボタンがいくつかあります。ImageButtons の「android:src」属性は、背景が透明な .PNG ファイルです。これらの ImageButtons の親レイアウトには、「android:background」属性で定義されたカスタム背景画像があります。したがって、アクティビティの背景は透明ではないか、単に黒です。

私の質問は; ボタンのクリックがソース画像の透明な領域にあるのか、ソース画像の可視部分にあるのかをどのように検出できますか?

onTouchListener を使用してイベントの座標を取得し、ピクセルの色に応じて決定してみました。でも背景がカラフルなのでピンと来ませんでした。

どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1

0

こんにちは、このリンクが役立つと思います。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/view/View.java#View.dispatchTouchEvent%28android.view.MotionEvent%29

ポイントが目的の領域にない場合は、カスタム ボタンでこのメソッドをオーバーライドして false を返す必要があります。次のようにすることをお勧めします。

public static class MyButton extends ImageButton {
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        int iX = (int) event.getX();
        int iY = (int) event.getY();

        // TODO Or use a more sophisticated, pixel value-based condition
        if (!(iX >= 0 & iY >= 0 & iX < TheBitmap.getWidth() & iY < TheBitmap.getHeight())) {
            return false;
        }
        return super.dispatchTouchEvent(event)
    }
}
于 2013-05-06T13:31:33.510 に答える