Как исчезнуть пользовательский интерфейс действия и исчезнуть в пользовательском интерфейсе другой деятельности? - PullRequest
0 голосов
/ 08 сентября 2018

На данный момент у меня есть два AppCompatActivity:

  1. Основной, который отображает только интерфейс запуска (т. Е. Есть только логотип моего приложения, показанный в большом размере) (ConstraintLayout)

  2. Домашний, который отображает как меню навигации по ящику (DrawerLayout), так и пользовательский интерфейс реального приложения (ConstraintLayout).

Я хочу, чтобы мой интерфейс запуска исчезал в течение 2 секунд. После этой анимации я начну второй Activity, который должен быть добавлен.

Как мне это сделать?

Я искал fading-in и fading-out в in ConstraintLayout и DrawerLayout, но я не нашел их. Идея состояла в том, чтобы отрегулировать их значение в обработчике событий onCreate основного и других Activity (для ConstraintLayout основного, а также для DrawerLayout и ConstraintLayout другого).

1 Ответ

0 голосов
/ 08 сентября 2018

Для исчезновения текущей активности:

Создание стиля в res / values:

<style name="PageTransition.Activity" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@android:anim/fade_in</item>
    <item name="android:activityOpenExitAnimation">@android:anim/fade_out</item>
    <item name="android:activityCloseEnterAnimation">@android:anim/fade_out</item>
    <item name="android:activityCloseExitAnimation">@android:anim/fade_in</item>
</style>

Тогда в стиле вашей деятельности, который обычно является Apptheme для MainActivity: добавить эту строку:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/one</item>
        <item name="colorPrimaryDark">@color/one</item>
        <item name="colorAccent">@color/colorAccent</item>
        name="android:windowAnimationStyle">@style/PageTransition.Activity</item>
    </style>

Чтобы запустить следующий пользовательский интерфейс, задержано: В вашем случае вам нужно использовать обработчик для задержки переходов:

 private final int interval = 1000; // 1 Second
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        public void run() {

        ValueAnimator animator1 = ValueAnimator.ofInt(10, 0);

        animator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {


                float x = (Integer) valueAnimator.getAnimatedValue() / (float) 10;
                yourview.setAlpha(x);
            }
        });

        animator1.setDuration(500);
        animator1.start();
}

Позвоните по этому номеру:

handler.postAtTime(runnable, System.currentTimeMillis() + interval);
handler.postDelayed(runnable, 2000); //two seconds

Очевидно, вы хотите установить начальные альфа-значения на 0. Надеюсь, это помогло!

EDIT:

Определите свои собственные анимированные эффекты исчезновения, если хотите настроить продолжительность ...

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:interpolator/decelerate_quad"
    android:fromAlpha="startalpha" android:toAlpha="endalpha"
    android:duration="{YourDuration in ms}"/>

Если предыдущий способ не работает для некоторых API, используйте его перед началом действия:

...
overridePendingTransition(int enterAnim, int exitAnim);
startActivity(intent);
....
...