我有一个Android应用程序,其中整个应用程序的主题不是材料主题,所以我为新的活动制作了另一个材料主题。材料小部件,如TextInputLayout和其他工作正常,但材料过渡不工作。
我已经在res〉transitions〉explode.xml中创建了一个xml文件,并在其中进行了以下转换:
<?xml version="1.0" encoding="utf-8"?>
<explode xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="5000">
</explode>
我在style.xml中的素材主题是:
<style name="MaterialTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/logo_color</item>
<item name="android:statusBarColor">@android:color/white</item>
<item name="colorControlActivated">@color/name_primary_color</item>
<item name="colorControlHighlight">#A3ABBC</item>
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/name_primary_color</item>
<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>
<item name="android:windowActivityTransitions">true</item>
<!-- specify enter and exit transitions -->
<item name="android:windowEnterTransition">@transition/explode</item>
<item name="android:windowExitTransition">@transition/explode</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
现在,当我从一个活动切换到另一个活动时,过渡应该起作用,但它没有起作用。我也尝试过在活动中定义过渡,如:
private fun setupWindowAnimations() {
val slide =
TransitionInflater.from(this).inflateTransition(R.transition.explode)
window.exitTransition = slide
}
它也不起作用,所以我应该在这里做错什么?请帮助。
1条答案
按热度按时间8ehkhllq1#
您的
MaterialTheme
应该继承Theme.Material.*
,而不是Theme.MaterialComponents.*
。例如:
如果您无法使用
Theme.Material.*
作为基本主题,您可以使用windowAnimationStyle
来定义进入和退出动画,而不是使用材质过渡。请参阅this answer示例。