java - Android 用手指拖动 imageview 行为很奇怪

标签 java android imageview drag move

我正在为我的应用程序实现 imageview 拖动功能。 我尝试过使用下面的代码,但它的行为很奇怪。当我尝试拖动图像时 它会改变位置,并且在 move 过程中会显示类似缩放图像的效果。 我想用手指平滑地 move 图像。

请帮我解决这个问题

@Override
    public boolean onTouch(View v, MotionEvent event) {
        final int X = (int) event.getRawX();
        final int Y = (int) event.getRawY();
        MarginLayoutParams marginParams = new MarginLayoutParams(mImagePreView.getLayoutParams());

        switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:
            _xDelta = X - marginParams.leftMargin;
            _yDelta = Y - marginParams.topMargin;
            break;
        case MotionEvent.ACTION_MOVE:
            marginParams.leftMargin = X-_xDelta;
            marginParams.topMargin = Y - _yDelta;
            marginParams.rightMargin = -250;
            marginParams.bottomMargin = -250;

            FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(marginParams);
            mImagePreView.setLayoutParams(layoutParams);

            break;
        default:
            break;
        }
        return true;
    }

最佳答案

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mImagePreView.getLayoutParams();
layoutParams.leftMargin += offsetX;
layoutParams.topMargin += offsetY;

并且有错误:

    _xDelta = X - marginParams.leftMargin;
    _yDelta = Y - marginParams.topMargin;

X - 绝对坐标中的事件,marginParams.leftMargin - 坐标相对于父布局

关于java - Android 用手指拖动 imageview 行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194431/

相关文章:

java - Maven 构建仅在使用 jenkins 运行时失败

java - Android Html5/java 应用程序 : mosync gallery upload & send email

java - 使用 Spring-Test-MVC 对 Spring-Security 进行单元测试 - 集成 FilterChain/ServletFilter

java - 如何在Android手机上制作RTSP服务器?

java - 我可以从启动启动一个 Activity 并让它进入后台而不让用户看到它吗,android

java - Android 图像背景带圆角

java - 如何在 Android 应用程序中播放和停止 mp3 文件

Android WebView - 下载 PDF 最终得到 HTML 文件

android - ImageView动画帮助

android - ImageFactory.imageAsResized 返回 null