大佬教程收集整理的这篇文章主要介绍了android – 拖动时跳转ImageView. getX()和getY()值正在跳跃,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这个onTouchListener试图通过跟踪pointerId来解决这个问题.这个onTouchListener的问题是在拖动ImageView时,ImageView非常疯狂地跳转. getX()和getY()值跳转.
我觉得我正确地做到了这一点.我不想为此编写自定义视图,因为我已经实现了scaleGestureDetector并编写了一个有效的自定义rotateGestureDetector.一切正常但我需要解决使用getRawX()和getRawY()时遇到的问题.
有谁知道我在这里做错了什么?
这是我的onTouchListener:
final View.onTouchListener onTouchListener = new View.onTouchListener() { @Override public @R_489_8487@an onTouch(View v,MotionEvent event) { relativeLayoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams(); final int action = event.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { final float x = event.getX(); final float y = event.getY(); // Where the user started the drag lastX = x; lastY = y; activePointerId = event.getPointerId(0); break; } case MotionEvent.ACTION_MOVE: { // Where the user's finger is during the drag final int pointerIndex = event.findPointerIndex(activePointerId); final float x = event.getX(pointerIndeX); final float y = event.getY(pointerIndeX); // Calculate change in x and change in y final float dx = x - lastX; final float dy = y - lastY; // update the margins to move the view relativeLayoutParams.leftMargin += dx; relativeLayoutParams.topMargin += dy; v.setLayoutParams(relativeLayoutParams); // Save where the user's finger was for the next ACTION_MOVE lastX = x; lastY = y; v.invalidate(); break; } case MotionEvent.ACTION_UP: { activePointerId = INVALID_POINTER_ID; break; } case MotionEvent.ACTION_CANCEL: { activePointerId = INVALID_POINTER_ID; break; } case MotionEvent.ACTION_POINTER_UP: { // Extract the index of the pointer that left the touch sensor final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; final int pointerId = event.getPointerId(pointerIndeX); if(pointerId == activePointerId) { // This was our active pointer going up. Choose a new // active pointer and adjust accordingly final int newPointerIndex = pointerIndex == 0 ? 1 : 0; lastX = (int) event.getX(newPointerIndeX); lastY = (int) event.getY(newPointerIndeX); activePointerId = event.getPointerId(newPointerIndeX); } break; } } return true; } }; image1.setOnTouchListener(onTouchListener);
以上是大佬教程为你收集整理的android – 拖动时跳转ImageView. getX()和getY()值正在跳跃全部内容,希望文章能够帮你解决android – 拖动时跳转ImageView. getX()和getY()值正在跳跃所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。