0

私はこの画像をxml(および他の要素)に持っています:

        <ImageView
        android:clickable="true"  
android:onClick="imageClick" 
        android:id="@+id/Decena0"
        android:layout_width="120dp"
        android:layout_height="120dp"
        tools:ignore="ContentDescription" />

画像を押して指を離さないときに、次の2つの方法を実行したいと思います。最初に:

public void imageClick(View view) {  
//Implement image click function  
Log.e("Example", "Imagen clickada");
}

2番:

@Override
public boolean onTouchEvent(MotionEvent event) {
//Coordenadas
int x = (int) event.getX();
int y = (int) event.getY();

switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
            break;
    case MotionEvent.ACTION_MOVE;
            break;
    case MotionEvent.ACTION_UP:
    break;
}   
return true;
    }

どうすればいいですか?なぜなら、画像を押して指を離すと、最初の方法しか実行されない(完全に理解している)が、画像を押して指を離さずに指を動かさない場合は、何も実行しない方法。画像がない場所をクリックすると、2番目の方法がうまく機能します。

全てに感謝

4

2 に答える 2

1

onTouchEventのドキュメントによると:

戻り値

イベントが処理された場合はtrue、それ以外の場合はfalse。

したがって、メソッドが戻るtrueと、他のイベントは発生しません。クリックリスナーも実行する場合は、を返しfalseます。

于 2012-09-18T17:13:27.923 に答える
0

public abstract boolean onLongClick (View v) ビューがクリックされたままになっている場合は、Calledを使用できます。パラメータ:vクリックして保持したビュー。戻り値:コールバックがロングクリックを消費した場合はtrue、それ以外の場合はfalse。

またはこのようなもの

@Override
    public boolean onTouchEvent(MotionEvent e,  MapView map) { //this is for map on touch
        // TODO Auto-generated method stub

        if (e.getAction() == MotionEvent.ACTION_DOWN) {
            start = e.getEventTime();
            int x = (int) e.getX();
            int y = (int) e.getY();
            touchedPoint = map.getProjection().fromPixels(x, y);

        }

        if (e.getAction() == MotionEvent.ACTION_UP) {
            stop = e.getEventTime();
        }
        if (stop - start > 2000) { //your code on long touch, in this case more than 2 sec
     }
            }); 
于 2012-09-18T17:59:49.210 に答える