我需要像电子游戏一样拖动图像。我画了几行,我需要拖动它,看看在窗口“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();
}
任何解决方案都会被贬低。谢谢!
答案 0 :(得分:2)
它会“移动”您在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);
}