最近在搞一个安卓小项目,有个地方需要用到半透明的效果,这可把我给难住。以前没怎么搞过这玩意,只能硬着头皮上,边查资料边摸索,总算是给弄出来。今天就来分享一下我的实践过程,希望能帮到有同样需求的小伙伴。
瞎捣鼓的开始
我啥也不懂,就在布局文件里瞎捣鼓。找到那个需要半透明的控件,直接在android:background
属性里设置颜色。我想,这颜色嘛肯定有办法调透明度,于是就在网上找各种颜色代码。
试好几个,什么#80000000
、#7F000000
之类的,看着像是那么回事,结果放到模拟器上一跑,要么全黑,要么没效果,搞得我一头雾水。
找到点门路
后来我静下心来,仔细查查资料,才知道原来安卓里设置透明度,主要是通过颜色值的alpha通道来控制的。alpha值就是颜色值的前两位,范围是00到FF,00表示完全透明,FF表示完全不透明。
比如说,我要设置一个半透明的黑色背景,就可以用#80000000
,其中80就是alpha值,表示50%的透明度(因为80是十六进制,换算成十进制就是128,正好是255的一半)。
这下我心里就有底,在布局文件里找到那个控件,把android:background
属性改成#80000000
,一运行,还真出来!
更进一步
虽然在布局文件里设置半透明效果成功,但我这人比较喜欢折腾。我想,能不能在代码里动态控制透明度?这样就可以根据不同的情况,显示不同的效果。
于是我又开始查资料,发现可以通过设置View
的setAlpha()
方法来控制透明度。这个方法的参数是一个0到1之间的浮点数,0表示完全透明,1表示完全不透明。
我赶紧在代码里试试:
- 先找到那个控件:
View myView = findViewById(*_view);
- 然后设置透明度:
*(0.5f);
一运行,效果跟在布局文件里设置的一模一样!这下我就更开心,以后就可以根据需要在代码里随意控制透明度。
更高级的玩法(状态栏)
后来在一次开发中,遇到一个需求.要求是使状态栏呈现半透明,使得底层的布局透过状态栏.继续研究发现,状态栏的透明度也是可以通过背景颜色的alpha值来控制的.通过控制颜色值来实现.
总结
这回搞安卓半透明效果,虽然一开始有点懵,但通过不断尝试和查资料,最终还是搞定。主要有两种方法:
- 在布局文件中设置:通过
android:background
属性设置颜色值,其中alpha通道控制透明度。 - 在代码中设置:通过
View
的setAlpha()
方法设置透明度,参数是一个0到1之间的浮点数。
希望我的分享能帮到大家,以后再遇到类似的需求,就不会像我一样手忙脚乱。哈哈,今天的分享就到这里,下次再见!