2016-08-19 139 views
0

我想問幾個關於這段代碼的問題。我需要幫助,請新手上的手勢

問題:

  1. 爲什麼他們實現姿態探測器接口這樣GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener
    這是我第一次看到接口這樣

  2. ​​3210
    他們爲什麼要初始化o從界面的對象?
    僅當我們使用匿名類時才能完成它嗎?
    爲什麼他們使用(手勢檢測器緊湊)而不是(手勢檢測器)?
    我無法理解(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; 

} 
} 

我搜索關於這些問題,我不」找到有用的東西。
有人可以解釋我嗎?

+0

您是否閱讀過有關這些方法的文檔?並且該類爲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);不知道它的存在意義是什麼

它的意義?它檢測到雙擊...