Java 使用共享元素转换后活动仅闪烁

Java 使用共享元素转换后活动仅闪烁,java,android,user-interface,animation,android-transitions,Java,Android,User Interface,Animation,Android Transitions,您好,我正在开发一个应用程序,其中我使用共享元素转换在登录时为进入和退出转换设置动画,并注册活动为一个imageview和两个TextView设置动画,但我的问题是,当我单击“注册”按钮时,视图根本没有设置动画。注册活动闪烁两次,并且没有动画发生注册活动中的图像失去了形状,所以我不知道我哪里出了问题,因为我在两个活动中给出了相同的转换名称。问题仍然存在,因此我希望得到一些帮助。 这是我的styles.xml <resources xmlns:tools="http://schemas.an

您好,我正在开发一个应用程序,其中我使用共享元素转换在登录时为进入和退出转换设置动画,并注册活动为一个imageview和两个TextView设置动画,但我的问题是,当我单击“注册”按钮时,视图根本没有设置动画。注册活动闪烁两次,并且没有动画发生注册活动中的图像失去了形状,所以我不知道我哪里出了问题,因为我在两个活动中给出了相同的转换名称。问题仍然存在,因此我希望得到一些帮助。 这是我的styles.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>
<!-- 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>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
假的
假的
真的
@android:过渡/褪色
@android:过渡/褪色
真的
@android:过渡/移动
@android:过渡/移动
我的登录活动

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);

    }
public void gotoregister(视图){
Intent Intent=新Intent(LoginActivity.this,RegisterActivity.class);
Pair[]pairs=新的Pair[3];
pairs[0]=新对(text\u login,getResources().getString(R.string.login\u text\u transition));
pairs[1]=新对(login\u page\u curve,getResources().getString(R.string.transition\u name\u signup));
pairs[2]=新对(register_text,getResources().getString(R.string.register_text_transition));
ActivityOptions Compat Options Compat=ActivityOptions Compat.MakeScenetTransitionAnimation
(LoginActivity.this,pairs);
startActivity(intent,options compat.toBundle());
完成();
//覆盖转换(R.anim.bottom\u向上,R.anim.bottom\u向下);
}

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

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

这在我的代码中起作用

styles.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>
<!-- 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>

s
@颜色/原色
@颜色/原色暗
@颜色/颜色重音
真的
假的
假的
@样式/自定义活动动画
假的
真的
真的
@颜色/原色
@空的
假的
假的
@颜色/前景\材质\灯光
xml(v21)


假的
真的
真的
@android:彩色/透明
假的
假的
试试这个

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();
            }

我看到你完成了当前的活动后,开始一个新的过渡。如果以这种方式完成,则“进入”和“退出”转换将丢失


尽量保持
LoginActivity
的功能,看看它是否有效

add
true
的风格,我希望它能对您有所帮助。@Hardik尝试过使用您的解决方案,但仍然无法在代码下工作。当我用简单的布局转换创建新项目时,但用复杂的布局它根本不起作用。这就是为什么我感到困惑的原因。@john如果这行是出现在
manifest.xml
文件
android:hardwareAccelerated=“true”中
从应用程序标记中删除这一行。这仍然没有用。我有一个图层列表在设置动画时失去了形状。原因可能是什么。第二个问题是,现在我的自定义图层列表在给出转换名称后失去了形状。仍然没有改变。。但是谢谢你的时间和耐心,但是你能帮我看看图层列表吗?它在尝试制作动画时实际上正在失去形状。实际上,我想问你关于图层列表的情况,它有自定义形状,但自定义形状在一秒钟内失去了宽度activity@john