给Activity设置背景(半)透明

一 设置Activity背景完全透明
1 设置样式Theme.Translucent
可用的样式有:
@android:style/Theme.Translucent@android:style/Theme.Translucent.NoTitleBar@android:style/Theme.Translucent.NoTitleBar.Fullscreen
注意:如果直接使用了,你的程序也许会直接崩溃!原因可能是你的Activity继承的是V7包的AppCompatActivity,这时你所使用的主题要与Theme.AppCompat兼容,否则程序就会崩溃了。
解决方案:
使你的Activity继承android.app包的Activity。
2 使用background
在布局直接使用属性background,可惜我试过了是没有效果的。
3 自定义样式如下:
<style name="myTransparent">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>

<!--半透明-->
<color name= "gray_64" > #646464 </color>
<color name= "transparent" > #00000000 </color>
说明:如果直接这样子使用 了,程序可能崩溃,原因和1一样,
其中解决方案一:
参考1就是: 使你的Activity继承android.app包的Activity
解决方案二:
使我们自定义的样式继承Application标签下设置的样式后,再设置透明背景,代码如下:
<style name="myTransparent" parent="@style/AppTheme">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
4 设置Window参数
@Override
public void onStart() {
    super.onStart();
    Window window = getWindow();
    WindowManager.LayoutParams windowParams = window.getAttributes();
    windowParams.alpha = 1f;//1.0全透明.0不透明.
    window.setAttributes(windowParams);
}
说明,在onStart方法中通过windowParams.alpha属性设置透明度,这个方法设置完透明可以但是设置半透明就不行了,不能达到对话框弹起来的那中效果。
设置Activity背景半透明
1 自定义样式继承
@android:style/Theme.Dialog(推荐)
<style name="myTransparent" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@color/gray_64</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
    <item name="android:windowIsFloating">true</item>
    <!--<item name="android:windowContentOverlay">@null</item>-->
    <!--<item name="android:backgroundDimEnabled">true</item>-->
</style>
说明,这样Activity启动后就能达到对话框效果,如果程序崩溃参考上述(一)中的1。





  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值