使用共享元素过渡后,活动只是闪烁



嗨,我正在开发一个应用程序,我正在使用共享元素过渡来动画登录时的进入和退出过渡,并注册活动对一个图像视图和两个文本视图进行动画处理,但我的问题是视图根本没有动画,而是当我单击注册按钮时,注册活动闪烁两次并且没有动画发生,此外注册活动中的图像会失去其形状,所以我不知道我在哪里出错了我在两个活动中都给出了相同的过渡名称,问题仍然存在,因此我将不胜感激。 这是我的风格.xml

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<!-- Transition -->
<item name="android:windowContentTransitions" tools:targetApi="21">true</item>
<item name="android:windowEnterTransition" tools:targetApi="21">@android:transition/fade
</item>
<item name="android:windowExitTransition" tools:targetApi="21">@android:transition/fade
</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowSharedElementEnterTransition" tools:targetApi="21">
@android:transition/move
</item>
<item name="android:windowSharedElementExitTransition" tools:targetApi="21">
@android:transition/move
</item>
</style>

</resources>

我的登录活动

public void gotoregister(View view) {
Intent intent = new Intent(LoginActivity.this,RegisterActivity.class);
Pair[] pairs  = new Pair[3];
pairs[0] = new Pair<View,String>(text_login,getResources().getString(R.string.login_text_transition));
pairs[1] = new Pair<View,String>(login_page_curve,getResources().getString(R.string.transition_name_signup));
pairs[2] = new Pair<View,String>(register_text,getResources().getString(R.string.register_text_transition));
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation
(LoginActivity.this,pairs);
startActivity(intent,optionsCompat.toBundle());
finish();
//overridePendingTransition(R.anim.bottom_up,R.anim.bottom_down);
}

这在我的代码中起作用。

样式.xml

<!-- Base application theme. -->
s<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
</style>
<style name="AppTheme.NoActionBarMain">
<item name="windowActionBar">false</item>
<item name="android:windowDisablePreview">true</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<item name="android:colorForeground">@color/foreground_material_light</item>
</style>

样式.xml(v21(

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
</style>

试试这个。

View sharedView = splashLogo;
String transitionName = getString(R.string.splash_logo_animate);
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(SplashscreenActivity.this, sharedView, transitionName);
startActivity(i, options.toBundle());
finishAfterTransition();
}
else {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(SplashscreenActivity.this, sharedView, transitionName);
ActivityCompat.startActivity(getApplicationContext(), i, options.toBundle());
finish();
}

您是否尝试过在样式主题中使用这些?

<item name="android:windowContentTransitions">true</item>
<item name="android:windowActivityTransitions">true</item>

我看到您在开始具有过渡的新活动后完成了当前活动。如果以这种方式完成,则进入和退出过渡将丢失。

尝试保留LoginActivity以查看它是否有效

最新更新