मैं पिछले कुछ घंटों के लिए अपना सिर तोड़ रहा हूं, Google से बाहर निकल गया हूं और स्टैक ओवरफ्लो या मेरे लिए काम करने वाले अन्य स्थानों पर कोई भी उदाहरण नहीं है, इसलिए यह ...बटन के साथ कस्टम व्यू ऑनगेशर लिस्टनर
मेरे पास एक कस्टम दृश्य है, extends LinearLayout and implements GestureDetector.OnGestureListener
।
मेरे कस्टम लेआउट में मेरे पास 3 बटन हैं, प्रत्येक में एक क्लिक श्रोता है। मैं जो कुछ चाहता हूं वह कुछ करने के लिए दृश्य में हर जगह फ़्लिंग करने में सक्षम होना है, लेकिन बटन पर क्लिक करने में सक्षम होना भी है।
मेरा ऑनफ्लिंग फ़ंक्शन शानदार दृश्य काम करता है यदि मैं दृश्य के अंदर फ़्लिंग करता हूं लेकिन बटनों में से एक नहीं। यदि मैं बटनों में से किसी एक पर फ़्लिंग करता हूं, तो यह ज्यादातर मामलों में कुछ क्लिक करता है या कुछ में कुछ भी नहीं करता है।
यहाँ मेरी कोड के प्रासंगिक हिस्सा है:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
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) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return gestureDetector.onTouchEvent(event);
}
return false;
}
वापसी सच के किसी भी संयोजन की कोशिश की, विवरण झूठा है; मैं सोच सकता था ... किसी भी मदद की सराहना करेंगे! :)
धन्यवाद! http://developer.android.com/reference/android/view/SurfaceView.html
शीर्ष पर SurfaceView साथ, अपने बटन अभी भी काम करना चाहिए और अपने प्रेषण नहीं किसी भी बिना बटन पर प्राप्त करने के लिए सक्षम होना चाहिए:
उत्तर देने के लिए धन्यवाद लेकिन मैं SurfaceView का उपयोग नहीं करना पसंद करता क्योंकि यह इसके लिए इरादा नहीं है और मुख्य रूप से क्योंकि मेरा मुद्दा सही तरीके से सही "वापसी वापस; झूठी वापसी" करने का मामला होना चाहिए। –