I have following situation:
I have a custom ListView with ImageView and TextView in a row. The ImageView has an onTouchListener, wchich invokes my onTouch method. Here are some lines from it:
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);
When move is detected I'm showing up new image (not this in ListView) and I'm starting to move it according to x and y coordinates.
The problem is, that getX and getY return positions relative to ImageView in the list, not the whole ListView (I think so). So when I touch an item in the middle and swipe finger up, then getY returns negative values (above ImageView boundary).
Hope, I explained clearly..
Any ideas how to get this coordinates relative to the screen size? Thank you.
Try using getRawX() and getRawY() instead of getX() and getY().
getX() and getY() returns the values respective to the views that it was called on. Hence Let's say,
ImageView imV = (ImageView)findViewById(R.id.image_view);
Then you can get x,y using
x = imV.getX() + event.getX();
y = imV.getY() + event.getY();
Here I assume you have set the onTouchListener on imV.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With