पर एक स्वाइप इशारा का पता लगाने के लिए कैसे मैं RelativeLayout
और WebView
के साथ एक साधारण एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं।वेबव्यू
मुझे स्क्रीन के बाएं हिस्से के 20% में केवल नीचे से ऊपर स्वाइप का पता लगाना है। तो जब उपयोगकर्ता उस स्थान पर नीचे से ऊपर तक स्वाइप करता है तो मुझे एक कस्टम संवाद दिखाना होगा।
क्या मैं कोशिश है:
import android.app.Activity;
import android.view.MotionEvent;
import android.view.View;
public class ActivitySwipeDetector implements View.OnTouchListener {
static final String logTag = "ActivitySwipeDetector";
private Activity activity;
static final int MIN_DISTANCE = 100;
private float downY, upY;
public ActivitySwipeDetector(Activity activity){
this.activity = activity;
}
public void onRightToLeftSwipe(){
}
public void onLeftToRightSwipe(){
}
public void onTopToBottomSwipe(){
}
public void onBottomToTopSwipe(){
System.out.println("BOTTOM TO TOP SWIPE DONE!");
}
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN: {
downY = event.getY();
return true;
}
case MotionEvent.ACTION_UP: {
upY = event.getY();
float deltaY = downY - upY;
if(Math.abs(deltaY) > MIN_DISTANCE){
if(deltaY > 0) { this.onBottomToTopSwipe(); return true; }
}
else {
return false;
}
return true;
}
}
return false;
}
}
layout = (RelativeLayout)this.findViewById(R.id.layout);
layout.setOnTouchListener(activitySwipeDetector);
लेकिन यह कुछ भी नहीं नहीं है! लेकिन कोई सफलता के साथ
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;
public class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
public MyWebView(Context context,AttributeSet set){
super(context,set);
}
@Override
public boolean onTouchEvent(MotionEvent evt) {
boolean consumed = super.onTouchEvent(evt);
if (isClickable()) {
switch (evt.getAction()) {
case MotionEvent.ACTION_DOWN:
lastTouchY = evt.getY();
downTime = evt.getEventTime();
hasMoved = false;
break;
case MotionEvent.ACTION_MOVE:
hasMoved = moved(evt);
break;
case MotionEvent.ACTION_UP:
float actualTouchY = evt.getY();
long currentTime = evt.getEventTime();
float difference = Math.abs(lastTouchY - actualTouchY);
long time = currentTime - downTime;
if ((lastTouchY < actualTouchY) && (time < 220) && (difference > 100)) {
System.out.println("SWIPE1");
}
if ((lastTouchY > actualTouchY) && (time < 220) && (difference > 100)) {
System.out.println("SWIPE2");
}
break;
}
}
return consumed || isClickable();
}
long downTime;
private float lastTouchY;
private boolean hasMoved = false;
private boolean moved(MotionEvent evt) {
return hasMoved ||
Math.abs(evt.getY() - lastTouchY) > 10.0;
}
}
!!!:
तो मैं इस तरह से एक कस्टम वेबव्यू बनाने की कोशिश क्या कोई मेरी मदत कर सकता है?? धन्यवाद!!!!! :)
मेरे वेबव्यू में विधि सेट नहीं है GestureDetector ... मैं एंड्रॉइड 4.0 का उपयोग कर रहा हूं ... – JackTurky
क्षमा करें कस्टम वेब व्यू जोड़ने के लिए भूल गया .. अब – Nermeen
महान !!!! मैं नीचे से ऊपर (मुझे क्या चाहिए) को छोड़कर सभी को हटा दें और मैं देखता हूं कि अगर मैं webView.getScrollY()> = webView.getScale() * (webView.getContentHeight() - webView.getHeight() को छोड़ देता हूं अपवाद। लेकिन यह बहुत अच्छा काम करता है !!!!!!! क्या मैं मुझे बता सकता हूं कि स्क्रीन के केवल एक हिस्से पर उस इशारा को कैसे पहचानें? धन्यवाद! – JackTurky