Java 如何移动位图并设置其动画
我想将位图从X,Y移动到新的X',Y'并设置动画。我有一个SurfaceView作为活动的内部类,该SurfaceView作为线程运行,并处理画布上的所有绘图 以下是线程的运行方法:Java 如何移动位图并设置其动画,java,android,Java,Android,我想将位图从X,Y移动到新的X',Y'并设置动画。我有一个SurfaceView作为活动的内部类,该SurfaceView作为线程运行,并处理画布上的所有绘图 以下是线程的运行方法: public void run() { while(threadOk == true) { if(!holder.getSurface().isValid()) continue; Canva
public void run()
{
while(threadOk == true)
{
if(!holder.getSurface().isValid())
continue;
Canvas canvas = null;
try
{
canvas = holder.lockCanvas();
letsDraw(canvas);
}
finally
{
if (canvas != null)
{
holder.unlockCanvasAndPost(canvas);
}
}
}
}
下面是letsDraw(Canvas Canvas)
方法:
public void letsDraw(Canvas canvas)
{
canvas.drawARGB(255, 0, 102, 0);
canvas.drawBitmap(card.getPic(), card.getX(), card.getY(), null);
}
卡
是自定义类卡(位图pic,float X,float Y)的实例
。
问题是,我知道如何处理这种情况。我想将位图“移动”几个像素,并在这样做时设置动画。我认为实现这一点的唯一方法是使用LinearInterpolator计算位图的X和Y位置,然后使用“letsDraw”方法绘制 我认为实现这一点的唯一方法是使用LinearInterpolator计算位图的X和Y位置,并使用“letsDraw”方法绘制 你做错了 是你应该做的一个例子
基本上是为了“移动”(动画)要更新x和y坐标的图像,并重新绘制视图。这可以通过在draw调用结束时调用
invalidate()
来实现。您做得都不对
是你应该做的一个例子
基本上是为了“移动”(动画)要更新x和y坐标的图像,并重新绘制视图。这可以通过在draw调用结束时调用
invalidate()
来实现。我在youtube上浏览了一些教程,制作教程的人说这是正确的方法,因为在视图中,它作为单独的线程运行。你是说我不应该把它作为线程运行吗?不,你在letsDraw()
中有一个不需要的draw调用。已为您提供了预制作的方法。然而,在你的情况下,如果你不想改变任何东西,你可以在draw调用结束时调用invalidate()
。我在youtube上浏览了一些教程,制作这些教程的人说这是正确的方法,因为在视图中是作为单独的线程运行的。你是说我不应该把它作为线程运行吗?不,你在letsDraw()
中有一个不需要的draw调用。已为您提供了预制作的方法。但是,在您的情况下,如果不想更改任何内容,只需在draw调用结束时调用invalidate()
。