我正在尝试在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/

10-11 20:19