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