在小米的系统播放器中,在进行视频切换时会有画面残留。经过多次调试可以通过重绘surface完成,不过要注意重绘的时间。
核心代码:
getHolder().addCallback(new SurfaceHolder.Callback2() {
@Override
public void surfaceRedrawNeeded(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(final SurfaceHolder holder) {
SdkLogger.d("surfaceCreated");
new Thread() {
@Override
public void run() {
SdkLogger.d("clearSurfaceThread");
if (holder != null) {
Canvas canvas = holder.lockCanvas();
if (canvas != null) {
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
holder.unlockCanvasAndPost(canvas);
}
}
}
}.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
@Override
public void surfaceRedrawNeeded(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(final SurfaceHolder holder) {
SdkLogger.d("surfaceCreated");
new Thread() {
@Override
public void run() {
SdkLogger.d("clearSurfaceThread");
if (holder != null) {
Canvas canvas = holder.lockCanvas();
if (canvas != null) {
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
holder.unlockCanvasAndPost(canvas);
}
}
}
}.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});