如何知道触摸位置是否在特定区域 - Android

时间:2016-10-17 11:02:00

标签: android position touch

如果点击了特定的屏幕区域(我的RelativeLayout),我想调用一个方法。我正在开发一个 tic-toc-toe 游戏,我希望在每个抽头方块中得出每个圆圈或十字架的alpha值。
这是我的xml文件,如果被点击,每个ImageView将成为一个圆圈或十字架:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:background="#e4f7a6"
    android:layout_above="@+id/buttonRed"
    android:id="@+id/relativeLayout">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/board"
        android:src="@drawable/board"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Center"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/red"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/leftCenter"
        android:src="@drawable/red"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:translationX="20dp"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rightCenter"
        android:src="@drawable/red"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:translationX="-20dp"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/upCenter"
        android:src="@drawable/red"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        android:translationY="40dp"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/upLeft"
        android:src="@drawable/red"
        android:layout_alignParentLeft="true"
        android:translationX="20dp"
        android:translationY="40dp"

        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/upRight"
        android:src="@drawable/red"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:translationY="40dp"
        android:translationX="-20dp"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/downLeft"
        android:src="@drawable/red"
        android:translationY="-40dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:translationX="20dp"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/downRight"
        android:src="@drawable/red"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:translationY="-40dp"
        android:translationX="-20dp"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/downCenter"
        android:src="@drawable/red"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:translationY="-40dp"
        />
</RelativeLayout>

我知道如何通过以下方式获得点击位置:

Display display = getWindowManager().getDefaultDisplay();
@Override
public boolean onTouchEvent(MotionEvent event) {
    int x = (int)event.getX();
    int y = (int)event.getY();
    return true;
}

那么我应该如何在 tic toc toe 板上获得每个方块的面积?

1 个答案:

答案 0 :(得分:1)

将焦点更改列表器应用于imageview,并在图像视图获得焦点的位置执行代码: -

if(hasFocus){
// do your code

}else{

}