2011-06-04 9 views
16

मैं इस स्थिति निम्नलिखित है:MotionEvent Gety() और getX() गलत मान

मैं imageView और एक पंक्ति में TextView के साथ एक कस्टम ListView है। छवि दृश्य में एक टचलिस्टर है, wchich मेरे ऑन टच विधि को आमंत्रित करता है। यहाँ यह से कुछ पंक्तियां हैं:

if (event.getAction()==MotionEvent.ACTION_MOVE) { 
    layout.leftMargin = (int) event.getX() - dragIcon.getWidth()/2;   
    layout.topMargin = (int) event.getY() - dragIcon.getHeight()/2; 
    //Log.d("Tag", "Pozycja: " + event.getX() +", "+ event.getY()); 
} 
dragIcon.setLayoutParams(layout); 

जब इस कदम का पता चला है मैं नई छवि को दिखा रहा हूँ (ListView में यह नहीं) और मैं x और y निर्देशांक के अनुसार इसे स्थानांतरित करने शुरू कर रहा हूँ।

समस्या यह है कि सूची में ImageView के सापेक्ष getX और getY वापसी स्थिति, संपूर्ण सूची दृश्य (मुझे ऐसा नहीं लगता)। तो जब मैं बीच में किसी आइटम को स्पर्श करता हूं और उंगली को स्वाइप करता हूं, तो get नकारात्मक मान देता है (छवि दृश्य सीमा से ऊपर)।

आशा है, मैं स्पष्ट रूप से व्याख्या ..

कोई भी विचार कैसे प्राप्त करने के लिए इस स्क्रीन आकार के सापेक्ष निर्देशांक? धन्यवाद।

+0

, देखें (http://stackoverflow.com/questions/20636163/difference-between-motionevent-getrawx-and-motionevent-getx) – Suragch

उत्तर

43

getRawX() और getRawY()getX() और getY() के बजाय getRawY() का उपयोग करने का प्रयास करें।

+0

यह मदद की भी [MotionEvent.getRawX और MotionEvent.getX के बीच अंतर] धन्यवाद – glodos

+0

@kcoppock आपने माँ के समय बचा लिया..धन्यौ बहुत बहुत प्यारा .... –

2

getX() और getY() उन विचारों के संबंध में मान देता है जिन्हें इसे कॉल किया गया था। इसलिए मुझे लगता है आप IMV पर onTouchListener निर्धारित किया है मान लें,

ImageView imV = (ImageView)findViewById(R.id.image_view); 

तो फिर तुम एक्स प्राप्त कर सकते हैं, वाई

x = imV.getX() + event.getX(); 
y = imV.getY() + event.getY(); 

यहाँ का उपयोग कर।

+0

अच्छा। धन्यवाद। – hariszhr

संबंधित मुद्दे