Perché lo ViewGroup
riceve solo ACTION_DOWN
nello onInterceptTouchEvent
? Secondo i documenti, finché viene restituito il falso, dovrebbe ricevere tutti i tipi di evento. http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29 Punto # 3.onInterceptTouchEvent ottiene solo ACTION_DOWN
codice di esempio:
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new Container(this));
}
private class Container extends LinearLayout {
public Container(Context context) {
super(context);
setBackgroundColor(0xFF0000FF);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Log.i(TAG, "onInterceptTouchEvent");
int action = ev.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
Log.i(TAG, "onInterceptTouchEvent.ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.i(TAG, "onInterceptTouchEvent.ACTION_MOVE");
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
Log.i(TAG, "onInterceptTouchEvent.ACTION_UP");
break;
}
return super.onInterceptTouchEvent(ev);
}
}
}
Come può il genitore intercettare l'evento se il bambino l'ha già spedito? –
i bambini non inviano eventi di tocco (normalmente). La bolla di eventi tattili dal genitore ai bambini in modo iterativo. Scendendo si trova suInterceptTouchEvent e in arrivo è onTouchEvent. Continua a gonfiarsi finché qualcuno non ritorna vero. – user123321
Se ho una vista con un onTouchListener, che aggiungo a un ViewGroup. Questo ascoltatore viene chiamato, inizia un comportamento, quindi restituisce false. Dopo che il ViewGroup può "intercettare" l'evento? Se il codice del gestore è già stato eseguito? –