gpt4 book ai didi

android - 奥利奥 : disable Activity transition animation

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:28 29 4
gpt4 key购买 nike

我需要为我的应用程序中的所有屏幕禁用 Activity 过渡动画。以前的解决方案适用于所有 Android 版本:

<style name="base_theme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowAnimationStyle">@null</item>
</style>

...但对于 Android 8“Oreo”,每次转换(向前或向后移动)都会导致黑屏闪烁。 IE。仍然没有任何动画,但会出现非常烦人的闪烁(90% 的几率,~20-30 毫秒,整个屏幕)。

根据我的“研究”:

  • 不依赖 Activity 内容,空 Activity 转载
  • 没有任何可能减慢过渡过程的后台工作
  • Intent.FLAG_ACTIVITY_NO_ANIMATION 也会闪烁
  • overridePendingTransition(0,0) 也不起作用

我能找到的唯一解决方案:

定义一个空的过渡动画

<?xml version="1.0" encoding="utf-8"?>
<set />

并将其应用于应用程序中的每个 Activity (onCreate & finish)

overridePendingTransition(R.anim.animation_activity_none, R.anim.animation_activity_none);

问题:

是对 Oreo 的某种新限制(即功能),还是平台错误,或者可能是应用程序问题?还有其他解决方案吗?

[更新]

又一个发现。确保在主线程上调用 Activity finish() 和 overridePendingTransition() 对!否则会发生线程竞争并且有时不会应用 overridePendingTransition。

[更新]

Google 已确认这是 Android 8.0 中的一个错误,可能会在 8.1 中修复。因此,“空动画”修复已存在多年,直到 minSdkVersion == 27。

最佳答案

我有同样的问题,我设法解决了,想法是什么都不玩,请看下面的xml:

值文件夹

<style name="yourTheme">
<item name="android:windowAnimationStyle">@style/ThemeApp.Animation.Activity.Replace</item>

<style name="ThemeApp.Animation.Activity.Replace">
<item name="android:activityOpenEnterAnimation">@anim/replace_anim</item>
<item name="android:activityOpenExitAnimation">@anim/replace_anim</item>
<item name="android:activityCloseEnterAnimation">@anim/replace_anim</item>
<item name="android:activityCloseExitAnimation">@anim/replace_anim</item>
<item name="android:taskOpenEnterAnimation">@anim/replace_anim</item>
<item name="android:taskOpenExitAnimation">@anim/replace_anim</item>

动画文件夹:replace_anim.xml

<set/>

关于android - 奥利奥 : disable Activity transition animation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401883/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com