如果我把筹码拖离初始位置,它应该画一条线。当我移动筹码时,它应该总是画一条线。
这就是我所尝试的:
case MotionEvent.ACTION_UP:
Toast.makeText(this, "here", Toast.LENGTH_SHORT).show();
Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()
.getDefaultDisplay().getWidth(), (int) getWindowManager()
.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(10);
int startx = 50;
int starty = 100;
int endx = 150;
int endy = 210;
canvas.drawLine(startx, starty, endx, endy, paint);
break;
我将该代码放在芯片的ontouch listener中。您可以在此处下载该项目:https://www.dropbox.com/s/ggfbsbkaokj9vxi/CoachingBoard.rar?dl=0
通过拖动绘制直线的最佳解决方案是从ACTION\u向下获取x和y位置,然后从ACTION\u MOVE获取下一个x和y位置,在switch语句之外,使画布无效。使用此起始x、y和结束x、y位置绘制线。
这些代码的所有解释如下:
public class TouchEventView extends View {
float downxpos;
float downypos;
float upxpos;
float upypos;
private Paint paint = new Paint();
private Path path = new Path()
public TouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setColor(Color.GREEN);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawLine(downxpos, downypos, upxpos, upypos, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downxpos = event.getX();
downypos = event.getY();
case MotionEvent.ACTION_MOVE:
upxpos = event.getX();
upypos = event.getY();
break;
default:
return false;
}
invalidate();
return true;
}
}
希望这将帮助你和其他社区,如果你需要更多的描述,请随时询问。
在进一步检查了您的代码之后,我相信我已经达到了您想要的效果。
我们将转到DrawingView,为drawCanvas定义一个getter,这样我们就可以在DrawingView类之外访问画布。
接下来,我们将前往篮球
,并执行以下操作:
float startX;
float startY;
public boolean onTouch(View view, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getRawX();
startY = event.getRawY();
...
break;
case MotionEvent.ACTION_UP:
Paint paint = new Paint(); //set this as a field in drawView with another getter to avoid garbage collection penalties
paint.setStrokeWidth(15f);
paint.setColor(Color.BLACK);
drawView.getCanvas().drawLine(startX, startY, event.getRawX(), event.getRawY(), paint);
drawView.invalidate();
break;
}
}
这样做的作用:当你拿起芯片时,它会保存起始坐标,当你放下芯片时,它会在你的绘图视图中从头到尾画一条线。
你甚至可以把线画成一条连续的路径,这样线总是相互接触的,但这超出了这个答案的范围。
我已经使用MP Android chart创建了一个折线图,并希望创建一条可拖动的线来设置限制。因此,如果该值超过行值,则用户会收到警报。我的用例类似于Android系统数据使用限制。 我遇到了LimitLines-https://github.com/PhilJay/MPAndroidChart/wiki/The-Axis,还使用触摸事件回调拖动https://github.com/PhilJa
问题内容: 我想按画布画圆。这是我的代码: [MyActivity.java]: [View.java]: 所以我只有黑屏,没有圆圈。为什么不起作用?如何解决? 问题答案: 您可以覆盖视图的onDraw方法并绘制圆。 有关绘制自定义视图的更好参考,请查看官方的Android文档。 http://developer.android.com/training/custom-views/custom-
问题内容: 我试图通过拖放在由PyQt5创建的GUI上绘制一个矩形。我设法做到了,但是释放鼠标左键时就绘制了矩形。 我想做的就是这个链接: 当按下鼠标左键时,开始绘制矩形。 拖动时,通过鼠标移动调整矩形形状。 释放鼠标左键时,确定矩形形状。 我该如何实施?提前致谢。 这是我的代码。 问题答案: 您不必使用该函数,但是每次移动鼠标时都会调用该函数,并且我已经修改了代码以使其更简单。
本文向大家介绍Android绘制动态折线图,包括了Android绘制动态折线图的使用技巧和注意事项,需要的朋友参考一下 所谓动态折线图,就是折线图能随着手指的滑动进行动态绘制,这里很定会产生动画效果。基于这个效果,这里使用SurfaceView进行制图。 实现步奏如下: (1): 这里新建一个绘图ChartView,继承SurfaceView并实现SurfaceHolder.Callback ,
我画了4条线从中心到按钮,我给你看的照片。我不知道如何在图片中画出红色的曲线。 [在此处输入图像说明] 或 [在此输入图像说明(更简单)]
图形界面允许您使用不同的类创建图形。 在下面的代码中,我使用3个不同的类创建形状: 产生屏幕图像: 不幸的是,接口不提供任何用于转换的功能。 例如,要将形状移动到新位置,我使用以下方法: 我不喜欢逻辑的实例。 是否有一种更通用的方法可以在不使用instanceof逻辑的面板周围拖动任何形状? 完整示例: