Sto lavorando a un'applicazione (su un Galaxy Nexus), e ho notato che Google ha implementato il "Google Now" applicazione quando si scorrere dalla parte inferiore della cornice sullo schermo (il browser Chrome anche ha fatto questo per un po ', non so se lo fa ancora). Mi sono guardato intorno ma non sono stato in grado di determinare come hanno realizzato questo. C'è un modo semplice per gestire i gesti che iniziano nella cornice piuttosto che sullo schermo?lunetta Gesti con Android
Ho controllato le pagine di sviluppo per riferimento, ma l'unico articolo che ho trovato è stato qui:
http://developer.android.com/design/patterns/gestures.html
C'è qualsiasi altro luogo dove questa informazione sarebbe disponibile?
[Edit]
Ho cercato, senza successo, di ottenere molto gesti bordo di lavoro basati sul metodo di Lain_B, ma non riesco a farlo funzionare. Ecco il codice che sto usando per cercare di rilevare i gesti, ma logcat è sempre emettendo uno zero ...
public class MainActivity extends Activity implements OnGestureListener {
private GestureDetector myGesture;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myGesture = new GestureDetector(getBaseContext(),
(OnGestureListener) this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e("Flags Touch", "Flags: " + event.getEdgeFlags());
return myGesture.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
Log.e("Flags", "Flags: " + e.getEdgeFlags());
Log.e("Event", "onDown");
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
Log.e("Event", "onLongPress");
// TODO Auto-generated method stub
}
@Override
public void onShowPress(MotionEvent e) {
Log.e("Flags", "Flags: " + e.getEdgeFlags());
Log.e("Event", "onShowPress");
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.e("Event", "onSingleTapUp");
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// Log.e("Event", "onScroll");
return false;
}
// these constants are used for onFling
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.e("Event", "onFling");
Log.e("Flags", "Flags: " + e1.getEdgeFlags());
if (e1.getEdgeFlags() == MotionEvent.EDGE_LEFT) {
// code to handle swipe from left edge
Log.e("!!!!!", "Edge fling!");
}
try {
// do not do anything if the swipe does not reach a certain length
// of distance
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) < SWIPE_THRESHOLD_VELOCITY) {
}
// left to right swipe
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) < SWIPE_THRESHOLD_VELOCITY) {
}
} catch (Exception e) {
// nothing
}
return false;
}
}
[Edit 2]
Con uscita richiesto di Lain_B ...
(Utilizzando Nexus 7) ... a partire da più lontano punto di sinistra possibile sulla lunetta, e scorrendo a destra verso il centro (ish).
08-16 16:44:13.674: I/Fling(16702): Flags: 0
08-16 16:44:13.674: I/Fling(16702): e1: 2.5 711.5152
08-16 16:44:13.674: I/Fling(16702): e2: 215.4591 717.08105
Swiping dal punto centrale dello schermo, fuori dallo schermo (a destra)
08-16 16:46:37.364: I/Fling(16702): Flags: 0
08-16 16:46:37.364: I/Fling(16702): e1: 392.5 758.1818
08-16 16:46:37.364: I/Fling(16702): e2: 783.4375 743.3334
Non sono sicuro, ma stai cercando questo? http://developer.android.com/reference/android/view/GestureDetector.html –
Sto già utilizzando un ascoltatore gesto, stavo solo cercando di determinare come implementarlo quando si avvia al di fuori dei confini dello schermo. – RyanInBinary