2012-03-15 4 views
3

私はアンドロイドで働いています。私はこれらの次の方法で行う必要があるいくつかの機能があります: -Android onGestureListenerとonTouchListner

1. MotionEvent.ACTION_DOWN 
2. MotionEvent.ACTION_UP 
3. MotionEvent.ACTION_MOVE 

をし、私もそのイメージにfling()をしたいです。

私のアプリケーションでonGestureListeneronTouchListenerを実装しましたが、これらは正しく動作しません。 onTouchListenerは機能していますが、onGestureListenerは機能しません。 onTouchListnerコードを削除すると、onGestureListenerが正しく動作しています。

ですので、どうすればよいのか教えてください。私はこれらの4つのメソッドを自分のアプリケーションに実装したいと思っています。

1. MotionEvent.ACTION_DOWN 
2. MotionEvent.ACTION_UP 
3. MotionEvent.ACTION_MOVE 
4. onFling 
+0

下記の説明が追加されました。 – Deva

答えて

7

あなたは、以下の方法

// For touch 
public boolean onSingleTapUp(MotionEvent event) { return false; } 

// For Fling 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    return false; 
} 

をオーバーライドあなたの活動からOnGestureListenerを実装することにより、これをacheiveすることができますが、この情報がお役に立てば幸いです。


EDIT 1:詳細説明:

1>

public class MyActivity implements OnGestureListener 

2あなたの活動からOnGestureListenerを実装> GestureDetectorのインスタンスを作成します。

private GestureDetector gestureScanner; 

そして、 onCreate

// Avoid a deprecated constructor 
// (http://developer.android.com/reference/android/view/GestureDetector.html) 
gestureScanner = new GestureDetector(this, this); 

3>オーバーライド以下の方法:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return gestureScanner.onTouchEvent(event); 
} 

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    /* on scroll to the next page in story */ 

    if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
      && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
     // ... 
    } 
    /* on scroll to the previous page in story */ 
    else if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
      && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
     // ... 
    } 

    return false; 
} 

@Override 
public boolean onSingleTapUp(MotionEvent event) { 
    return false; 
} 

EDIT 2:onScrollメソッドをオーバーライドします 移動を処理するための詳細here

+0

どうすればmoveメソッドの機能を実装できますか教えてください。 –

+0

onScroll(MotionEvent e1、MotionEvent e2、float distanceX、float distanceY)メソッドをオーバーライドすることで同じことに注意することができます。上の編集されたansのリンクで詳細を見てください。 – Deva

0

同じように見て持っていますスワイプやフイングイベントのプリムローズパスを追いかけた仲間のAndroid開発者からのアドバイスリスナーを作成したり、OnGestureListenerクラスを実装しようとすると、インポートにimport android.view.GestureDetector.OnGestureListenerが含まれていることを確認してください。

これ以外の場合、OnGesturListenerはGestureOverlayViewのインポートを使用しますが、それはあなたが探しているようではありません。ジェスチャアプリケーションを使用してジェスチャキャプチャを実装し、保存されたジェスチャをインポートし、実行時にアプリケーションのジェスチャライブラリを作成して、バックグラウンドでファンシーアルゴリズムを実行してユーザが何をしているかを「予測」するときに役立ちますユーザーの入力から最小限のものを逸脱しています。これは、フラットスクリーン上で小さなスタッフィーな指を引っ張っていくと、OSから来た場所の配列であることが判明しました。それは、飛行機や長時間の押し込みをキャプチャしようとする以外のアプローチです。これはユーザーが何を探しているかのように思われますが、この手法は非常に簡単なマルチプルジェスチャーキャプチャではありません。このテクニックは、ビデオゲームやゲームを開発するのが好きな人にバックドアを提供するのにも非常に役立ちます。また、9-5の世界では、サポートや管理のバックドアをモバイルアプリケーションに入れて、日常のユーザーからの設定やログを隠すこともできます。あなたは上記の意図されたテクニックを使用することができますが、その後、画面全体にわたってポイントや位置の配列を取得しなければなりません。また、非数学者や独学の開発者にとっては面倒です。私は誰にも貢献して助けてくれることを願っています。私がこれを学んでいたとき、誰も私にこのことを言及したことはありませんでした。私はAndroidについても読んだことのあるいくつかの本でそれを見つけたことはありませんでした。

関連する問題