1

他のレイアウトを含むがlinearlayoutあり、このレイアウトを保持して移動できるようにする必要があります。このコードとその移動を実装しました。しかし問題は、触るともっと振動することです(レイアウトを動かしても振動します)。

これが私が試した私のコードです...

private int _xDelta;
private int _yDelta;
LinearLayout ll= (LinearLayout) v.findViewById(R.id.layoutid);
ll.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent ev) {
                final int x_cord = (int) ev.getX();
                final int y_cord = (int) ev.getY();
                mScaleDetector.onTouchEvent(ev);
                final int action = ev.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN: {
                    _xDelta = x_cord - (int) ll.getX();
                    _yDelta = y_cord - (int) ll.getY();
                    break;
                }
                case MotionEvent.ACTION_MOVE: {
                    if (!mScaleDetector.isInProgress()) {
                        ll.setX(x_cord - _xDelta);
                        ll.setY(y_cord - _yDelta);
                    } else {

                    }

                    break;
                }

                }
                return true;
            }
        });
4

1 に答える 1

1

問題は、取得している X 値と Y 値である可能性があります。getX()とメソッドはgetY()補間されたポイントを取得しますが、getRawX()getRawY()は必要なより正確なポイントを取得します。これにより、振動の問題が修正されるはずです。

于 2013-07-26T12:07:55.737 に答える