[英]Android- How to drag a picture on a canvas
我需要像电子游戏一样拖动图像。 我画了几行,我需要拖动它,看看在窗口“out”之前绘制的线条。 我给你两张图片试图帮助理解它。
拖动前的图片:
然后我用手指触摸屏幕,然后我移动到屏幕顶部,所以这三行必须高于初始图像,如下所示:
我不知道怎么做这个“拖累效应”,有人可以帮帮我吗? 这不是作为.jpg文件的图像,是在画布上用“drawLine”绘制到imageView中的三条线。
我的onTouchEvent代码和我的drawRectangle代码:
public boolean onTouch(View view, MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_UP:
{
x = event.getX();
y = event.getY();
getFirstFoot();
return true;
}
case MotionEvent.ACTION_MOVE:
{
ammountX = event.getX() - startX;
ammountY = event.getY() - startY;
canvas.save();
canvas.translate(ammountX, ammountY);
//canvas.restore();
imageView.invalidate();
return true;
}
case MotionEvent.ACTION_DOWN:
{
startX = event.getX();
startY = event.getY();
}
}
return true;
}
drawRectagle代码:
private void drawRectangle(boolean erase)
{
buttonRed.setVisibility(View.VISIBLE);
buttonGree.setVisibility(View.VISIBLE);
buttonYellow.setVisibility(View.VISIBLE);
Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.ascensorsininfo);
canvas.drawBitmap(bitmap2, x - (bitmap2.getWidth() / 2), y - bitmap2.getHeight(), new Paint());
drawedPoints.add(String.valueOf(x - (bitmap2.getWidth() / 2)));
drawedPoints.add(String.valueOf(y - bitmap2.getHeight()));
imageView.invalidate();
y -= bitmap2.getHeight();
}
任何解决方案都会被贬低。 谢谢!
它将“移动”你绘制的所有内容,然后是你在x和y轴上所说的。
不要忘记保存和恢复它,如:
canvas.save();
canvas.translate(ammountX, ammountY);
// [draw your stuff here]
canvas.restore();
如果您的问题更多的是如何检测拖动效果,则必须覆盖视图的onTouchEvent方法。 就像是:
@Override
public boolean onTouchEvent (MotionEvent event){
if(event.getActionMasked() == MotionEvent.DOWN){
startX = event.getX();
startY = event.getY();
return true;
}else if(event.getActionMasked() == MotionEvent.MOVE){
ammountX = event.getX() - startX;
ammountY = event.getY() - startY;
return true;
}
return super.onTouchEvent(event);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.