2016-08-19 3 views
0

Я хочу задать несколько вопросов об этом коде. Мне нужна помощь, пожалуйста,Жесты на newboston

Вопросы:

  1. Почему они реализуют извещателя на Жест интерфейс таким образом GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener
    это первый раз, когда я вижу интерфейс как этот

  2. myGesture=new GestureDetectorCompat(this,this);
    Почему они инициализируют o bject из интерфейса?
    Нельзя ли это сделать, только если мы используем анонимный класс?
    И почему они использовали (компактный детектор жестов) вместо (детектор жестов)?
    Я не могу понять ключевое слово (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; 

} 
} 

Я искал об этих вопросах, и я Жду» найти что-нибудь полезное.
Может ли кто-нибудь объяснить мне?

+0

Вы прочитали документацию по этим методам? И класс реализует эти 2 интерфейса для GestureDetector, что с этим не так? Код намного чище с 'this', а не анонимными классами –

+0

, который читать, я не понимаю документацию, это запутывает –

+0

Посмотрите на используемые классы. Прочтите параметры и описания метода. Это только JavaDoc, поэтому, если вы понимаете Java, тогда вы узнаете, какие методы делают что. https://developer.android.com/reference/android/support/v4/view/GestureDetectorCompat.html –

ответ

1

GestureDetectorCompat (контекст Контекст, GestureDetector.OnGestureListener слушатель)

Деятельность является контекст и GestureDetector.OnGestureListener, так что объясняет (this, this)

недействительным setOnDoubleTapListener (GestureDetector.OnDoubleTapListener слушатель)

Этот интерфейс также реализован в Activity, поэтому снова используется this.


может кто-то объяснить и инициализировать объект без (это) ключевое слово

Конечно, можно, но сделать внутренний, анонимный класс получает вложен весь код, и он просто выглядит неаккуратно.

эта строка кода myGesture.setOnDoubleTapListener (this); не может понять, что значение его наличия

Его значение? Он обнаруживает двойной кран ...

Смежные вопросы