【问题标题】:Start Activity with animation black screen以动画黑屏启动 Activity
【发布时间】:2022-01-13 19:16:19
【问题描述】:

您好,我在打开和完成活动时从左到右和从右到左添加动画,但是当我输入 overridePendingIntent 时它显示黑屏...

这是我的 left_to_right.xml 动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="-100%"
        android:fromYDelta="0%"
        android:toXDelta="0%"
        android:toYDelta="0%" />
</set>

这是 right_to_left.xml 动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <translate
        android:duration="500"
        android:fromXDelta="0%"
        android:fromYDelta="0%"
        android:toXDelta="100%"
        android:toYDelta="0%" />
</set>

我正在像这样开始活动:

startActivity(Intent(this, SignInActivity::class.java))
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left)

并像这样完成它:

finish()
overridePendingTransition(R.anim.right_to_left, R.anim.left_to_right)

但是当它显示黑屏时......

这是我的主题

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.MyTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
        <item name="android:windowDisablePreview">true</item>
    </style>
</resources>

在我正在使用的活动中

android:theme="@style/Theme.MaterialComponents.Light.NoActionBar" 

我错过了什么?

【问题讨论】:

  • 签出此link
  • 如何使我的主题适应 android:theme="@android:style/Theme.Translucent" ?
  • 我的回答对您有帮助吗?如果您需要进一步的帮助,请告诉我。

标签: java android kotlin android-activity


【解决方案1】:

第一次活动:

我使用MainActivity 重建情况,使用Button 膨胀TargetActivity(第二个Activity):

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button_in = findViewById(R.id.button_in);
        button_in.setOnClickListener(v -> {
            Intent intent = new Intent(this, TargetActivity.class);
            startActivity(intent);
            overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
        });
    }
}

activity_main.xml 包含第一个 Button

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="MainActivity">

    <Button
        android:id="@+id/button_in"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20sp"
        android:backgroundTint="#2962FF"
        android:text="To TargetActivity" />

</RelativeLayout>

第二个活动:

第二个ActivityTargetActivity 那个finish() 有这样的动画:

public class TargetActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_target);

        Button button_out = findViewById(R.id.button_out);
        button_out.setOnClickListener(v -> {
            this.finish();
            overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
        });
    }
}

还有另一个Layout 与第二个Button 称为activity_target.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFAB00"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".TargetActivity">

    <Button
        android:id="@+id/button_out"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20sp"
        android:textColor="#ffffff"
        android:backgroundTint="#2962FF"
        android:text="To MainActivity" />
    
</RelativeLayout>

4 个动画:

您只需要anim 文件夹中的 4 个动画即可。 2 从左到右,反之亦然。

1.) slide_in_left.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />
</set>

2.) slide_out_left.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

3.) slide_in_right.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

4.) slide_out:right.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
</set>

最后别忘了在AndroidManifest.xml 中添加TargetActivity

<activity android:name=".TargetActivity"/>

【讨论】:

  • 添加windowIsTranslucent true 不起作用......问题不在于退出,即使我没有在第二个Activity上放任何东西它也不起作用进入动画
  • 好的。让我尽快重建你的项目。我将以退出和进入动画为例:D
  • 谢谢,如果可以的话,现在就告诉我。
  • 我重建它。希望有帮助。随意将答案标记为正确且快乐的编码!干杯:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 2011-02-07
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多