1

アプリケーションにイメージビューのドラッグ機能を実装しています。以下のコードで試してみましたが、動作がおかしいです。画像をドラッグしようとすると位置が変わり、移動中に画像をズームするように表示されます。画像を指で滑らかに動かしたい。

この問題を解決するのを手伝ってください

@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;
    }
4

1 に答える 1

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

そしてエラーがあります:

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

X - 絶対座標のイベント、marginParams.leftMargin - 座標は親レイアウトに相対的です

于 2013-03-04T04:42:12.390 に答える