2016-08-19 4 views
0

このコードについていくつか質問したいと思います。私は助けを必要とし、newbostonのジェスチャー

質問してください:

  1. 彼らはなぜ、これが私がこの

  2. のようなインタフェースを参照してください初めてであるこのようGestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener
    ジェスチャ検出器インタフェースを実装するのです​​3210
    なぜそれらを初期化するのですか?インターフェイスからの拒否?
    匿名クラスを使用する場合にのみ実行できますか?
    なぜ(ジェスチャ検出器)の代わりに(ジェスチャ検出器コンパクト)を使用しましたか?
    (this)キーワードが何であるかを理解できません。
    誰も私にそれを説明できますか? (this)キーワードを使用せずにオブジェクトを初期化する方法は?

  3. も、このコード行は、myGesture.setOnDoubleTapListener(this);
    私はその存在の意義を理解することはできません

コード:

public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener { 

private TextView textView1; 
private GestureDetectorCompat myGesture; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    textView1= (TextView) findViewById(R.id.textView1); 
    myGesture=new GestureDetectorCompat(this,this); 
    myGesture.setOnDoubleTapListener(this); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    return this.myGesture.onTouchEvent(event); 
} 

@Override 
public boolean onSingleTapConfirmed(MotionEvent motionEvent) { 
    textView1.setText(" onSingleTapConfirmed"); 
    return true; 
} 

@Override 
public boolean onDoubleTap(MotionEvent motionEvent) { 
    textView1.setText("onDoubleTap"); 
    return true; 
} 

@Override 
public boolean onDoubleTapEvent(MotionEvent motionEvent) { 
    textView1.setText("onDoubleTapEvent"); 
    return true; 
} 

@Override 
public boolean onDown(MotionEvent motionEvent) { 
    textView1.setText("onDown"); 
    return true; 
} 

@Override 
public void onShowPress(MotionEvent motionEvent) { 

    textView1.setText("onShowPress"); 
} 

@Override 
public boolean onSingleTapUp(MotionEvent motionEvent) { 
    textView1.setText(" onSingleTapUp"); 
    return true; 
} 

@Override 
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { 
    textView1.setText(" onScroll"); 
    return true; 
} 

@Override 
public void onLongPress(MotionEvent motionEvent) { 
    textView1.setText(" onLongPress"); 
} 

@Override 
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { 
    textView1.setText("onFling"); 
    return true; 

} 
} 

が、私はこれらの質問について検索し、私は」didnの便利なものは何も見つかりません。
誰でも私を説明できますか?

+0

これらの方法に関する文書をお読みになりましたか?クラスはGestureDetectorの2つのインターフェースを実装していますが、どうしたのですか?コードは、匿名クラスの代わりに 'this'を使ったほうがはるかに洗練されています –

+0

どちらを読むか、混乱しているドキュメントは分かりません。 –

+0

使用されているクラスを見てください。メソッドのパラメータと説明を読んでください。それはJavaDocだけなので、Javaを理解すれば、どのような方法で何ができるかを学ぶことができます。 https://developer.android.com/reference/android/support/v4/view/GestureDetectorCompat.html –

答えて

1

GestureDetectorCompat(コンテキスト・コンテキスト、 GestureDetector.OnGestureListenerリスナー)すなわち(this, this)

空隙setOnDoubleTapListenerを説明するように、活動コンテキストとGestureDetector.OnGestureListenerは、ある

(GestureDetector.OnDoubleTapListenerリスナー)

そのインターフェイスもアクティビティに実装されていますので、再度thisが使用されます。


誰かが(この)せずに、オブジェクトを説明し、初期化することができ、キーワード

確かに、あなたはできますが、内側の作り、匿名クラスは、ネストされたすべてのコードを取得し、それだけで乱雑に見えます。

この行のコードmyGesture.setOnDoubleTapListener(this);理解できない何がその存在の意義

その意義は?それはダブルタップを検出...

関連する問題