0

次のようなレイアウトがあります。

<FrameLayout
    android:id="@+id/container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:scaleType="center"/>
</FrameLayout>

「画像」は最初はフルスクリーンです。「画像」用に設定された onTouchListener があり、正常に動作します。次に、「画像」を ScaleAnimation でスケーリングします (約半分のサイズに)。「画像」がタッチされたときにのみ onTouchListener がピックアップされますが、画面全体で起動し、getX が同じになることが予想されます。 getRawX としての値。

onTouch の画像境界内にいるかどうかを検出する方法はありますか? スケール値に応じて境界をハードコーディングすることを考えましたが、もっと洗練された解決策があるに違いありません。

4

1 に答える 1

0

まず、次のように画面上の画像の幅と高さを確認できます。

widthOnScreen = origWidth * scaleFactor
heightOnScreen = origHeight * scaleFactor

あなたが言ったように、「画像は最初からフルスクリーンです」origWidth = viewWidthorigHeight = viewHeightおよびscaleFactorは最大/最小まで画像に適用される合計スケールです。

matrix.getvalues(val);

左、上、右、下を維持する:

left=val[2]; 
right=val[Matrix.MSCALE_X]*actualWidth+val[2]; //actualWidth is image's actual width
top=val[5];
bottom=vals[Matrix.MSCALE_Y]*actualHeight+val[5];

次に、がこれらの左、上、右、および下の境界内にあるonTouch()かどうかを確認します。event.getX()getY()

于 2013-01-02T06:23:10.037 に答える