我正在尝试在Surfaceview上实现动画。但是,我的Surfaceview的背景是透明的,我无法清除最后一帧的像素。
我可以在透明Surfaceview上实现一些动画吗?也许我只在 View 上使用'Animation'类。
谢谢!
也许我没有清楚地描述这个问题。我想制作一个动画,但是Surfaceview无法刷新最后一张图,它看起来像照片。
背景是透明的。我知道用颜色绘制 Canvas 可以清洁最后绘制的图形。但是它的背景是透明的,该方法无法实现刷新。
请帮我。谢谢!
最佳答案
观看以下代码,它对我有用:
Paint clearPaint = new Paint();
public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setZOrderOnTop(true);
this.getHolder().setFormat(PixelFormat.TRANSPARENT);
clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
}
public void drawMethod(){
Canvas canvas = this.getHolder().lockCanvas();
canvas.drawPaint(clearPaint);
canvas.drawBitmap(yourBitmap, null, yourBitmapRect, null);
this.getHolder().unlockCanvasAndPost(canvas);
}
您必须按Z顺序将SurfaceView放在顶部,并将PixelFormat设置为透明。这将使您的SurfaceView透明(正如您编写的那样,您已经完成了这一部分)。
然后,在每次绘制新图纸之前,必须先用透明涂料填充表面。这种“特殊”油漆需要设置为:
clearPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
关于Android Surfaceview动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7398849/