Android SurfaceView 透明、全屏等问题

经过各种尝试,透明与全屏在2.2版本及以下不能同时达到,通知栏总会在最上面,而2.3则可以同时达成。

另外,在theme里设置半透面的背景色,对于surfaceView没有用。

设置透明起码需要改两个地方,一个是Manifest添加Theme.Translucent,还有就是holder需要设置mSurfaceHolder.setFormat(PixelFormat.TRANSLUCENT);

对于mPaint设置的alpha是控制mPaint参与的绘制mCanvas的地方起作用,比如图片和触摸轨迹,对于它不参与的则不起作用,比如mCanvas的drawColor,就不会变得透明。

mCanvas想要画有透明度的背景色则需要drawARGB。

mCanvas要擦除画板,需要mCanvas.drawColor(Color.TRANSPARENT, Mode.CLEAR);

mCanvas某一处半透明多次累积,就会变成纯色,所以需要不断擦除。

另外锁定Canvas后,不绘制的画会闪屏,之后恢复。

双缓冲可以用来保存屏幕为图片,但是目前如果能成有透明度地图片话,保存了会出现问题。尚待解决。

你可能感兴趣的:(Android)