解决:Android 设置 Activity 透明和页面开闭时闪烁

一、说明

我们有的时候需要添加一个透明的 Activity,在上面做一些操作,但往往会有一些问题,要么不能完全透明,要么打开和关闭时存在短暂的闪烁,会影响用户体验。我在网上搜索了一些答案,亲试很发现大多是存在问题的。最后经过一系列尝试后终于实现用户无感知透明了。

二、解决方案

1、设置 Activity 透明

在 manifest 文件中给指定 Activity 设置如下主题。

XML 复制代码
    <!-- 透明主题 可实现 Activity 完全透明 -->
    <style name="TransTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@android:color/transparent</item> <!-- 背景色透明 -->
        <item name="android:windowIsTranslucent">true</item> <!-- 是否有透明属性 -->
        <item name="android:backgroundDimEnabled">false</item> <!-- 背景是否半透明 -->
        <item name="android:statusBarColor">@android:color/transparent</item> <!-- 状态栏透明 -->
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> <!-- activity窗口切换效果 -->

        <item name="android:windowNoTitle">true</item>
        <item name="android:activityOpenEnterAnimation">@null</item>
        <item name="android:activityOpenExitAnimation">@null</item>
        <item name="android:activityCloseEnterAnimation">@null</item>
        <item name="android:activityCloseExitAnimation">@null</item>
        <item name="android:windowTranslucentStatus">false</item>
    </style>

2、启动和关闭页面时闪烁问题

重写 Activity 的以下 2 个方法。

java 复制代码
    @Override
    public void overridePendingTransition(int enterAnim, int exitAnim) {
        super.overridePendingTransition(0, 0);
    }

    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(0, 0);
    }
相关推荐
jctech7 小时前
让「小程序」跑起真正的原生代码:ComboNative 多进程原生小程序运行时 · Alpha 首发
android·设计模式·架构
tmacfrank7 小时前
Android 17 重点新特性介绍
android
YM52e8 小时前
鸿蒙 Flutter 渐变效果详解:LinearGradient、RadialGradient、SweepGradient
android·学习·flutter·华为·harmonyos·鸿蒙
-SOLO-9 小时前
Android 内存压力工具
android
雅客李9 小时前
2026云手机延迟数据测评 安卓云手机远程操控实测哪个最好
android·智能手机
YM52e10 小时前
鸿蒙Flutter Card组件:Material设计风格卡片
android·学习·flutter·华为·harmonyos·鸿蒙
Xzaveir1 天前
不要用一个状态表示“号码已认证”:企业号码身份的四域模型
android·人工智能
(Charon)1 天前
【C++】手写 MySQL 连接池(二):同步连接的获取、加锁与释放
android
zhangjin11201 天前
AOSP下载
android
Mico181 天前
MySQL 8.0.35 GTID 主从复制搭建-基于GITD
android·mysql·adb