Анимация Lottie на встроенном заставке Android

Можно ли загрузить анимацию Lottie в макет моего экрана-заставки?

В настоящее время мой макет экрана-заставки таков:

background.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">

<item android:drawable="@drawable/path_background_gradient" />

<item
    android:drawable="@drawable/ic_locky"
    android:gravity="center" />

</layer-list>

styles.xml

<!-- Splash Launcher UI theme. -->
<style name="Locky.Theme.Launcher" parent="Locky.Theme">
    <item name="android:windowBackground">@drawable/custom_background_launcher</item>
    <item name="colorPrimary">@color/background_gradient_accent_start</item>
    <item name="colorPrimaryDark">@color/background_gradient_accent_start</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Я использовал это, чтобы предотвратить появление белого экрана при холодной загрузке Android.

Но вместо значка ic_locky я хочу использовать анимацию Lottie. Возможно ли это сделать? Потому что есть много приложений, которые используют анимированный логотип на экране-заставке.

Помогите, пожалуйста.

Спасибо вам всем.


person Mervin Hemaraju    schedule 13.05.2020    source источник
comment
Где вы смогли добиться этого? Не могли бы вы поделиться, пожалуйста, @Mervin Hemaraju   -  person ritwikshanker    schedule 30.09.2020
comment
та же проблема, братан   -  person johnrao07    schedule 25.10.2020


Ответы (2)


Так как WindowManager имеет небольшой контроль, вы можете использовать статическое изображение вашей анимации в windowbackground, а затем заменить его анимацией Lottie.

Лотти:

implementation 'com.airbnb.android:lottie:$lottieVersion'

на данный момент самая высокая версия - 3.4.0.

Затем используйте LottieAnimationView для загрузки анимации:

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/lav_thumbUp"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_marginStart="80dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:lottie_autoPlay="false"
    app:lottie_fileName="thumb_up.json"
    app:lottie_loop="false"
    app:lottie_speed="1.25" />

Подробнее: https://github.com/airbnb/lottie-android/blob/master/README.md

person Olle Ekberg    schedule 13.05.2020
comment
Да, но я хочу использовать его в списке слоев. Я не могу поместить ‹com.airbnb.lottie.LottieAnimationView› в список слоев. Смысл использования списка слоев на экране-заставке - предотвратить появление белого экрана во время холодной загрузки. Каким другим способом я могу это сделать? - person Mervin Hemaraju; 13.05.2020
comment
да. В диспетчере окон мало что можно контролировать. Что вы можете сделать, так это начать со статического изображения вашей анимации, а затем заменить его анимацией лотереи. - person Olle Ekberg; 14.05.2020
comment
Да, это возможно. Спасибо - person Mervin Hemaraju; 14.05.2020
comment
Привет, я использовал анимацию лотереи после статической загрузки, но я заметил, что белый экран мигает в течение нескольких миллисекунд, а затем начинается анимация. Есть ли какое-то решение для этого? - person Mohit Yadav; 30.08.2020

@ Мервин Хемараджу ...

Я думаю, вы можете это сделать, но вместо использования рисования используйте настраиваемый макет / действие для экрана-заставки.

(1) Прочтите это, чтобы узнать подробности: https://android.jlelse.eu/the-complete-android-splash-screen-guide-c7db82bce565.

(2) Проверьте соответствующий раздел Использование темы запуска с выделенным действием-заставкой

С уважением,

person Marlon López    schedule 21.12.2020