9

画面の半分を占める 場合でも、画面上のどこでも 検出できるOnGestureListenerように、どこにアタッチするかをより具体的にします。
onSingleTapUp
ImageView

これで、ImageView を持つアクティビティにリスナーができました。
しかし、リスナーは、ImageView の外側をクリックしたときにのみ起動します。

私はこれを読んで理解しようとしていますが、正しく理解できません。

このコードはアクティビティにあります。

 public boolean onSingleTapUp(MotionEvent e) {
    //addtext.setText("-" + "SINGLE TAP UP" + "-");
    //Log.d(TAG, "- + SINGLE TAP UP + - ***********************************************************************");  
    int btnsize = buttonSave.getHeight();
    int viewWidth = display.getWidth();
    int viewHeight = display.getHeight();

    // RIGHT SIDE SCREEN
    if(e.getX()> (viewWidth*0.7)){
        Log.d(TAG, "RIGHT SIDE");
        if(e.getY()> viewHeight*0.7){         
            Log.d(TAG, "right down on screen");
        }else if(e.getY()> (viewHeight*0.45)){ 
            Log.d(TAG, "right middle on screen   ");
        }
    }
    // LEFT SIDE SCREEN
    if(e.getX()< (viewWidth*0.3)){
        Log.d(TAG, "LEFT SIDE");
        if(e.getY()> viewHeight*0.7){ 
            Log.d(TAG, "Left middle on screen  ");
        }else if(e.getY()> (viewHeight*0.45)){
            Log.d(TAG, "Left down on screen ");
        }
    }
    return true;
}
4

2 に答える 2

10

画面タップの検出

画面上のタップを検出する簡単な方法が必要な人のために、これに答えています。

  1. android:onClickベース/ルート レイアウト (LinearLayout、RelativeLayout など) に値を追加します。任意の名前を付けることができますscreenTapped。例として名前を付けています。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:onClick="screenTapped">
    
  2. Activityに指定したのと同じ名前を使用して、このメソッドを に追加しますonClick

    public void screenTapped(View view) {
        // Your code here
    }
    

ここで、画面をタップすると、上記のメソッドが呼び出されます。

于 2014-12-22T11:50:59.177 に答える
1

私は自分の質問に答えています。上記の@Jasonに感謝します。onTouchEventすべてのビューに登録しました。
それはうまくいきます。

于 2011-06-08T05:25:14.550 に答える