Java 带滚动视图的绘图区域

Java 带滚动视图的绘图区域,java,android,android-activity,draw,Java,Android,Android Activity,Draw,我正在我的活动中创建一个绘画和绘图区域,我想用滚动视图移动它 如果我有此代码,我没有任何问题: <RelativeLayout android:id="@+id/frameVer" android:layout_width="match_parent" android:layout_height="2000dip" android:layout_marginBottom="3dp" android:layout_marginLeft="5dp"

我正在我的活动中创建一个绘画和绘图区域,我想用滚动视图移动它

如果我有此代码,我没有任何问题:

<RelativeLayout
    android:id="@+id/frameVer"
    android:layout_width="match_parent"
    android:layout_height="2000dip"
    android:layout_marginBottom="3dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="3dp"
    android:layout_weight="1"
    android:background="@null">

    <package.DrawingView
        android:id="@+id/drawing"
        android:layout_width="fill_parent"
        android:layout_height="2000dip"
        android:background="@null" />

</RelativeLayout>
绘制触摸事件:

@Override
public boolean onTouchEvent(MotionEvent event) {

    Point p = new Point();
    float touchX = event.getX();
    float touchY = event.getY();

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            drawPath.moveTo(touchX, touchY);
            break;
        case MotionEvent.ACTION_MOVE:
            drawPath.lineTo(touchX, touchY);
            break;
        case MotionEvent.ACTION_UP:
            drawCanvas.drawPath(drawPath, drawPaint);
            drawPath.reset();
            break;
        default:
            return false;
    }

    invalidate();
    return true;
}

拜托,有人能帮我吗?谢谢

这就是你的意思?或者卷轴和画图是平滑的,但你有时会错过画图??不,它先画图,当你仍然移动手指时,它不会画图。你的意思是它的滞后?或者卷轴和画图是平滑的,但你有时会错过画图??不,它先画图,当你仍然移动手指时,它不会画图。
public class LinkableScrollView extends ScrollView {

    private static final int NUMBER_OF_FINGERS_TO_ACTIVATE_SCROLL = 2;
    private boolean doubleDrag = false;
    private boolean enableScrolling = true;

    public LinkableScrollView(Context context, AttributeSet attrs, int defStyle)       {
        super(context, attrs, defStyle);
    }

    public LinkableScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LinkableScrollView(Context context) {
       super(context);
    }

    private int getScrollHeight() {
        return super.getChildAt(0).getHeight() - super.getHeight();
    }

    public boolean isEnableScrolling() {
       return enableScrolling;
    }

    public void setEnableScrolling(boolean enableScrolling) {
       this.enableScrolling = enableScrolling;
    }



     @Override
    public boolean onTouchEvent(@NonNull MotionEvent event) {

        if (isEnableScrolling()) {
            int action = event.getAction();

            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    super.onTouchEvent(event);
                    break;
                case MotionEvent.ACTION_POINTER_UP:
                    break;
                case MotionEvent.ACTION_UP:
                    super.onTouchEvent(event);
                   doubleDrag = false;
                    break;
                case MotionEvent.ACTION_MOVE:
                    if (event.getPointerCount() == NUMBER_OF_FINGERS_TO_ACTIVATE_SCROLL) {
                        doubleDrag = true;
                    }
                    if (doubleDrag) {
                       super.onTouchEvent(event);
                    }
            }
            return true;
        }
        else {
            return false;
        }


    }
}
@Override
public boolean onTouchEvent(MotionEvent event) {

    Point p = new Point();
    float touchX = event.getX();
    float touchY = event.getY();

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            drawPath.moveTo(touchX, touchY);
            break;
        case MotionEvent.ACTION_MOVE:
            drawPath.lineTo(touchX, touchY);
            break;
        case MotionEvent.ACTION_UP:
            drawCanvas.drawPath(drawPath, drawPaint);
            drawPath.reset();
            break;
        default:
            return false;
    }

    invalidate();
    return true;
}