Android 一个简单的单触式绘图视图,但在触摸完成之前继续获取操作\u取消
这让我快发疯了 我想我已经准备好了一切,但无论我做什么,在我把手指从视野中移开之前,触摸似乎都被取消了。更奇怪的是,我可以画很长的水平线,但垂直线总是很短 我使用的是三星G SII 2.3.3,但构建为2.1 蚂蚁的想法 我的示例代码:Android 一个简单的单触式绘图视图,但在触摸完成之前继续获取操作\u取消,android,canvas,touch-event,ondraw,Android,Canvas,Touch Event,Ondraw,这让我快发疯了 我想我已经准备好了一切,但无论我做什么,在我把手指从视野中移开之前,触摸似乎都被取消了。更奇怪的是,我可以画很长的水平线,但垂直线总是很短 我使用的是三星G SII 2.3.3,但构建为2.1 蚂蚁的想法 我的示例代码: package com.mycompany.myviews; import java.util.ArrayList; import android.content.Context; import android.graphics.Canvas
package com.mycompany.myviews;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class CustomView extends View
{
private ArrayList<DrawPoint> points = new ArrayList<DrawPoint>();
public CustomView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public void addPoint(DrawPoint p)
{
points.add(p);
}
public boolean onTouchEvent (MotionEvent event)
{
DrawPoint p = new DrawPoint((int)event.getX(), (int)event.getY());
switch(event.getAction())
{
case android.view.MotionEvent.ACTION_DOWN:
p.start = true;
break;
case android.view.MotionEvent.ACTION_CANCEL:
Log.d("TouchView", "On Touch cancelled.");
break;
}
addPoint(p);
invalidate();
return true;
}
public void onDraw(Canvas c)
{
super.onDraw(c);
Path path = new Path();
for (int i = 0; i < points.size(); i++)
{
DrawPoint currentPoint = points.get(i);
if (currentPoint.start == true)
path.moveTo(currentPoint.p.x, currentPoint.p.y);
else
path.lineTo(currentPoint.p.x, currentPoint.p.y);
}
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.BLACK);
c.drawPath(path, paint);
}
private class DrawPoint
{
public boolean start = false;
public Point p;
DrawPoint(int x, int y)
{
p = new Point(x, y);
}
}
}
这样,我的视图就可以获得所有内容。我编辑了我的答案
我在Android示例中找到了一个手指绘画示例,并且在stackoverflow上讨论了该示例。希望这对你有所帮助
我原来的帖子
我没有一个解决方案,但找到了一个网站,可能会给你一些
关于你能做什么的想法
我编辑了我的答案
我在Android示例中找到了一个手指绘画示例,并且在stackoverflow上讨论了该示例。希望这对你有所帮助
我原来的帖子
我没有一个解决方案,但找到了一个网站,可能会给你一些
关于你能做什么的想法
我发现满足我需求的解决方案是在案例中添加以下行,以便采取行动:
getParent().requestDisallowInterceptTouchEvent(true);
getParent().requestDisallowInterceptTouchEvent(true);
这样,我的视图就可以进行所有操作。我发现满足我需求的解决方案是在案例中添加以下行,以便采取行动:
getParent().requestDisallowInterceptTouchEvent(true);
getParent().requestDisallowInterceptTouchEvent(true);
这将允许我的视图获得所有触摸。谢谢,is展示了如何使用OnDraw,但在触摸方面我看不到任何东西。谢谢,is展示了如何使用OnDraw,但在触摸方面我看不到任何东西。