使用 onDraw()方法中的 canvas.drawBitMap()方法绘制应用程序使用surfaceview和位图的相机活动(白色矩形)表面视图。 我使用以下代码来实现这一目标:
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_top_left), x1, y1, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_top_right), x2, y1, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_bottom_left), x1, y2, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_bottom_right), x2, y2, null);
截图:
但是我希望通过在两个位图之间切换来获得动画效果,它应该如下所示:
我试图找出一些解决方案(即使在stackoverflow上),但发现只是冗长且昂贵。请提出一些清洁且成本较低的方法。
我正在使用画布在surfaceview内做这一切。
答案 0 :(得分:0)
我是通过调用surfaceview的 onDraw()中的postInvalidateDelayed来完成的。
postInvalidateDelayed(500, left,top,right,bottom);
这就是它的工作原理, onDraw()方法每500毫秒调用一次该时间更改位图(红色表示白色,白色表示红色)。可以使用简单的标志在图像之间进行更改。
if(rectBlink){
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_top_left_white), x1, y1, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_top_right_white), x2, y1, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_bottom_left_white), x1, y2, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_bottom_right_white), x2, y2, null);
}
else{
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_top_left_red), x1, y1, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_top_right_red), x2, y1, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_bottom_left_red), x1, y2, null);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.corner_bottom_right_red), x2, y2, null);
}
然后使用以下代码将标志状态形式true更改为false或false为true:
rectBlink=!rectBlink;
这一切都已完成。