मैं एक आवेदन पर काम कर रहा हूँ (एक Galaxy Nexus के), और मैंने देखा है गूगल आवेदन लागू किया है कि "Google अभी" जब आप भी स्क्रीन (क्रोम ब्राउज़र पर फलक के नीचे से स्वाइप के साथ पेनल जेस्चर थोड़ी देर के लिए यह किया, यकीन नहीं है कि यह अभी भी करता है)। मैं चारों ओर देख रहा हूं लेकिन यह निर्धारित करने में असमर्थ रहा कि उन्होंने इसे कैसे पूरा किया। वहाँ एक आसान तरीका इशारों कि फलक के बजाय स्क्रीन पर शुरू संभाल करने है?एंड्रॉयड
मैं संदर्भ के लिए डेवलपर पृष्ठों की जाँच की है, लेकिन केवल लेख मैं मिल सकता है यहाँ था:
http://developer.android.com/design/patterns/gestures.html
वहाँ कहीं और जहां इस जानकारी उपलब्ध होगी है?
[संपादित करें]
मैं किनारे इशारों Lain_B की पद्धति पर आधारित कार्य करवाने के लिए बहुत असफल कोशिश कर रहा है, लेकिन यह काम नहीं कर सकता। यहाँ कोड है कि मैं कोशिश करते हैं और जेस्चर का पता लगाने के लिए उपयोग कर रहा हूँ, लेकिन logcat हमेशा एक शून्य outputting है ...
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;
}
}
[संपादित करें 2]
Lain_B के अनुरोध किया उत्पादन के साथ...
(नेक्सस 7 का उपयोग करते हुए) ... फलक पर सब से अधिक दूर संभव बाईं बिंदु से शुरू, और मध्यम (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
स्क्रीन के केंद्र बिंदु, स्क्रीन बंद से (दाईं ओर)
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
मुझे यकीन है कि नहीं कर रहा हूँ, लेकिन आप इस के लिए देख रहे हैं? http://developer.android.com/reference/android/view/GestureDetector.html –
मैं पहले से ही एक इशारा श्रोता का उपयोग कर रहा हूं, मैं बस यह निर्धारित करने की कोशिश कर रहा था कि स्क्रीन के किनारे से बाहर से शुरू होने पर इसे कैसे कार्यान्वित किया जाए। – RyanInBinary