Android SurfaceView 透明、全屏等问题

本文探讨了在不同Android版本中实现透明主题的方法与限制,特别是在2.2与2.3版本之间的差异。文中详细介绍了如何通过修改Manifest文件和使用特定API来实现应用的透明效果,并讨论了透明背景下绘图的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过各种尝试,透明与全屏在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后,不绘制的画会闪屏,之后恢复。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值