Android 画布绘制:无法使用运行时生成的位图图像渲染动画
这里需要一点帮助:我现在没有主意了 以下是我需要做的:Android 画布绘制:无法使用运行时生成的位图图像渲染动画,android,android-ndk,android-canvas,Android,Android Ndk,Android Canvas,这里需要一点帮助:我现在没有主意了 以下是我需要做的: 渲染“基本”图像[它是从ARGB.8888字节数组创建的] 用户在屏幕上点击2点;我需要在从一点到另一点的路径周围的像素区域上执行像素操作。。。[我需要为整个路径上的每个像素计算一个像素的平方块] 以动画形式显示代码进行时对图像的修改 我能够显示整个路径;我能够正确计算和操作像素。。但我不能做的是显示动画,因为我的代码正在路径上进行。。。使用当前的实现,我能够在最后显示整个计算路径 public void onDraw(Canvas c
- 渲染“基本”图像[它是从ARGB.8888字节数组创建的]
- 用户在屏幕上点击2点;我需要在从一点到另一点的路径周围的像素区域上执行像素操作。。。[我需要为整个路径上的每个像素计算一个像素的平方块]
- 以动画形式显示代码进行时对图像的修改
public void onDraw(Canvas canvas){
canvas.drawColor(Color.WHITE);
Paint p = new Paint();
canvas.drawBitmap(base,0,0,p);
traverse clickEvent1.x -> clickEvent2.x
traverse for clickEvent1.Y -> clickEvent2.Y
{
newBitMap = calculateNewBitMap(base)
// I nee to redraw Canvas with (newBitMap)
// canvas.drawBitMap(newBitMap);
//Doesn't work
//postInvalidate();
//invalidate()
//AnimationDrawable.addFrame(newBitMap)
// I am not calling start here
//but just wanted to let you know that I do call animation start to display the frames stored in it
// animation.start();
}
// obviously wouldn't work here As it is already out of the loop
//invalidate();
}
请注意:
AnimationDrawable animDrawable = new AnimationDrawable();
Drawable frame1 = new BitmapDrawable(newCaclBitMap);
animDrawable.addFrame(frame1, 250);
感谢您的指点/建议。
动画
对象用于设置视图
对象的动画。您要做的是为画布设置动画。这更复杂,但可能更强大。从本质上讲,您需要导出一个方程式,该方程式将控制图形的运动,并将其作为时间的函数。当动画开始时,您将获得当前时间戳,然后在onDraw
方法中绘制画布在该时间点的外观。基本上,你必须绘制每一步。你所做的似乎是在一次调用onDraw()
中运行所有的绘制逻辑,而我认为你想要的是为动画的每一帧调用一次onDraw()
因此,不要在跟踪中使用类似的内容:
onDraw()
drawFrame()
drawFrame()
drawFrame()
...
你可以这样做:
onDraw()
drawFrame()
onDraw()
drawFrame()
onDraw()
drawFrame()
...
有一个这样的例子。谢谢你给我指点立方墙纸。。。我在“LunarLander”和“CubeliveWallper”实现中解决了这个问题