पर जेस्चर का पता लगाने में समस्या मेरे पास एक गतिविधि है जिसमें व्यूफ्लिपर है। व्यूफ्लिपर में 2 लेआउट शामिल हैं, जिनमें से दोनों अनिवार्य रूप से केवल सूची दृश्य हैं।ListView
तो यहां विचार यह है कि मेरे पास दो सूचियां हैं और एक से दूसरे में नेविगेट करने के लिए मैं एक क्षैतिज स्वाइप का उपयोग करूंगा।
मेरे पास यह काम है। हालांकि, जब स्वाइप निष्पादित करना शुरू होता है तो आपकी अंगुली की सूची कभी भी सूचीबद्ध होती है, उस आइटम को भी लंबे समय से क्लिक किया जाएगा।
यहाँ प्रासंगिक कोड रहा है:
public class MyActivity extends Activity implements OnItemClickListener, OnClickListener {
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;
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
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) {
if (mCurrentScreen != SCREEN_SECONDLIST) {
mCurrentScreen = SCREEN_SECONDLIST;
mFlipper.setInAnimation(inFromRightAnimation());
mFlipper.setOutAnimation(outToLeftAnimation());
mFlipper.showNext();
updateNavigationBar();
}
}
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (mCurrentScreen != SCREEN_FIRSTLIST) {
mCurrentScreen = SCREEN_FIRSTLIST;
mFlipper.setInAnimation(inFromLeftAnimation());
mFlipper.setOutAnimation(outToRightAnimation());
mFlipper.showPrevious();
updateNavigationBar();
}
}
} catch (Exception e) {
// nothing
}
return true;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (mGestureDetector.onTouchEvent(event))
return true;
else
return false;
}
ViewFlipper mFlipper;
private int mCurrentScreen = SCREEN_FIRSTLIST;
private ListView mList1;
private ListView mList2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout_flipper);
mFlipper = (ViewFlipper) findViewById(R.id.flipper);
mGestureDetector = new GestureDetector(new MyGestureDetector());
mGestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (mGestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
// set up List1 screen
mList1List = (ListView)findViewById(R.id.list1);
mList1List.setOnItemClickListener(this);
mList1List.setOnTouchListener(mGestureListener);
// set up List2 screen
mList2List = (ListView)findViewById(R.id.list2);
mList2List.setOnItemClickListener(this);
mList2List.setOnTouchListener(mGestureListener);
}
…
}
अगर मैं बदल "return true;" जेस्चर डिटेक्टर से "झूठी वापसी" के लिए कथन, मुझे लंबे समय तक क्लिक नहीं मिलते हैं। दुर्भाग्यवश, मुझे नियमित क्लिक मिलते हैं।
क्या कोई जानता है कि मैं इसके आसपास कैसे हो सकता हूं?
यह एक घटक मैं हाल ही में विकसित करने के लिए समान है, सिवाय इसके कि मैं मेरा और करने के लिए दृश्य रीसाइक्लिंग जोड़ा अपने एक सूची द्वारा समर्थित एडाप्टर। असल में, मैंने ListView कोड का एक समूह बनाया और इसे आपके द्वारा किए गए एक कस्टम इशारे को क्षैतिज स्क्रॉल व्यू से जोड़ा। – jfelectron
हाँ मैं इसे स्वाइप व्यू में जोड़ने पर भी काम कर रहा हूं! इसके अलावा, मैं तो बस (शाब्दिक बस, के बारे में 2 मिनट पहले) देखा वहाँ एक SwipeView पर listviews साथ एक बग है कि। अब मैं बग तय की और Git रेपो अद्यतन किया है। https://github.com/fry15/uk.co.jasonfry.android.tools – jsonfry
jfelectron हालांकि GitHub पर तुम्हारा है? –