【Lottie】引入Lottie实现好看的启动动画吧!

【Android】引入Lottie实现好看的启动动画吧!

在移动应用开发中,动画是提升用户体验的重要元素之一。然而,传统的动画实现方式往往需要大量的资源和时间。Lottie动画库的出现,为Android开发者提供了一种简单而强大的解决方案,使得复杂的动画效果得以轻松实现。

Lottie简介

Lottie是由Airbnb开源的一个库,它允许开发者在Android、iOS、Web等平台上渲染After Effects动画。Lottie通过解析JSON文件来实现动画,这意味着设计师可以在After Effects中创建动画,然后导出为JSON格式,开发者可以直接在应用中使用这些动画。

Lottie的优势

  1. 跨平台支持:Lottie支持Android、iOS、Web等多个平台,使得动画设计可以跨平台使用。
  2. 性能优化:Lottie动画使用原生渲染,不依赖于CPU或GPU,因此性能更加出色。
  3. 易于集成:Lottie的集成非常简单,只需要添加几个依赖项即可。
  4. 实时更新:开发者可以根据需要实时更新动画效果,而无需重新编译应用。

在Android中使用Lottie

选择一个心仪的动画吧

进入Lottie官网,选择一个心仪的动画:

LottieFiles Platform

比如这个:

image-20240731001124152

选择Download & Export

image-20240731001151602

将其下载到本地,而后打开AndroidStudio:

image-20240731001222872

在项目文件中的res包中创建一个raw文件夹:

注意:创建时就需要选择好资源类型

然后将我们准备好的json文件导入即可~

引入依赖

在Android中使用Lottie,首先需要在项目的build.gradle文件中添加Lottie库的依赖:

如图所示:

img

在依赖文件中添加这样一段:

implementation ("com.airbnb.android:lottie:6.4.0")

用于引入Lottie。

img

别忘了点击Sync Now应用。

渲染Lottie动画

Lottie提供了多种方式来渲染动画,包括在XML布局文件中直接使用LottieAnimationView,或者在Java代码中动态加载动画。

在xml布局文件中,可以这样定义一个LottieAnimationView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:clipChildren="false"
    android:clipToPadding="false">

    <com.airbnb.lottie.LottieAnimationView
        android:id="@+id/lottie"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:lottie_autoPlay="true"
        app:lottie_rawRes="@raw/asd" />
</LinearLayout>

img

lottie的常用属性如下:

  1. lottie_fileName - 指定要播放的动画的 JSON 文件名。这个 JSON 文件包含了 After Effects 导出的动画数据。
  2. lottie_autoPlay - 一个布尔值,用于指定动画是否在组件加载完成后自动播放。默认为 false
  3. lottie_loop - 一个布尔值,用于指定动画是否循环播放。默认为 false,表示动画只播放一次。
  4. lottie_repeatCount - 指定动画循环的次数。可以设置为一个具体的数字,或者使用 LottieDrawable.INFINITE 表示无限循环。
  5. lottie_speed - 动画播放的速度。默认值为 1.0,表示正常速度。可以设置为小于 1 的值来减慢动画,或大于 1 的值来加快动画。
  6. lottie_imageAssetsFolder - 指定存放动画中使用到的图片资源的文件夹路径。如果动画中包含了图片,需要设置这个属性。
  7. lottie_cacheStrategy - 指定 Lottie 动画的缓存策略。可以设置为 strongweaknone,以控制动画在内存中的缓存行为。
  8. lottie_enableMergePaths - 一个布尔值,用于指定是否启用路径合并。在某些情况下,启用路径合并可以提高性能,但可能会影响动画的精确度。
  9. lottie_scale - 动画的缩放比例。默认为 1.0,表示原始大小。
  10. lottie_animationListener - 设置一个动画监听器,用于监听动画的播放状态,如开始播放、循环播放、播放完成等。
  11. lottie_progress - 动画的当前进度,范围从 0 到 1。可以用来控制动画从特定进度开始播放。
  12. lottie_colorFilter - 用于设置动画的整体颜色滤镜,可以改变动画的颜色。

而在Java代码中,可以这样加载或者控制Lottie动画:

LottieAnimationView animationView = findViewById(R.id.lottieAnimationView);
animationView.setAnimation("animation.json");
animationView.playAnimation();

也可以在Java代码中这样设置属性:

LottieAnimationView lottieAnimationView = findViewById(R.id.animation_view);
lottieAnimationView.setAnimation("example.json");
lottieAnimationView.loop(true);
lottieAnimationView.repeatCount(LottieDrawable.INFINITE);
lottieAnimationView.setSpeed(1.0f);
lottieAnimationView.setImageAssetsFolder("images");
lottieAnimationView.enableMergePaths(true);
lottieAnimationView.setScale(1.0f);

在Activity中进行别的动画的编写,以及MainActivity的启动

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        LottieAnimationView lottie;
        lottie = findViewById(R.id.lottie);
        lottie.animate().translationX(2000).setDuration(2000).setStartDelay(2900);


        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(getApplicationContext(), MainActivity2.class);
                startActivity(intent);
            }
        },4000);
    }
}
  • 初始化LottieAnimationView:

    LottieAnimationView lottie;
    lottie = findViewById(R.id.lottie);
    

    这里通过findViewById方法获取了布局文件中定义的LottieAnimationView组件,并将其赋值给变量lottie

    设置动画效果:

    lottie.animate().translationX(2000).setDuration(2000).setStartDelay(2900);
    

    这段代码对lottie对象调用了animate()方法,开始构建一个动画效果。具体来说:

    • translationX(2000): 表示动画视图将在X轴上平移2000像素。
    • setDuration(2000): 设置动画的持续时间为2000毫秒,即2秒。
    • setStartDelay(2900): 设置动画开始前的延迟时间为2900毫秒,即2.9秒。

    使用Handler进行延迟操作:

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(getApplicationContext(), MainActivity2.class);
            startActivity(intent);
        }
    },4000);
    

    这段代码创建了一个新的Handler对象,并使用postDelayed方法安排了一个延迟执行的操作。具体来说:

    • Runnable: 一个实现了run方法的匿名内部类,该方法定义了延迟操作要执行的具体代码。
    • getApplicationContext(): 获取当前应用的上下文。
    • Intent: 创建一个新的Intent对象,用于在Android中启动新的Activity。
    • MainActivity2.class: 指定要启动的Activity的类名。
    • startActivity(intent): 调用startActivity方法,使用上面创建的Intent来启动MainActivity2

结语

分享一下在学习Android开发主线之余看到的小知识,希望大家喜欢~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Framework7是一个开源的、为移动应用开发而打造的HTML框架。它提供了丰富的UI组件和交互效果,能够帮助开发者快速构建具有良好用户体验的移动应用。 而Lottie是由Airbnb开发的一个跨平台动画库。它允许开发者使用JSON格式的动画文件,在移动应用中展示高质量的矢量动画效果。由于矢量图形的可伸缩性和灵活性,Lottie能够在不同尺寸和屏幕密度的设备上精确呈现动画,同时支持交互和动态修改。 Framework7和Lottie可以很好地结合在一起,为移动应用开发带来更加丰富的交互和视觉效果。通过引入Lottie库,开发者可以将矢量动画无缝集成到Framework7的UI组件中,为应用增添生动和有趣的效果。 例如,开发者可以在Framework7中使用Lottie来创建一个有趣的加载动画,用于在网络请求期间显示给用户,以提高用户体验。开发者可以使用Lottie Studio等工具创建和编辑动画,然后将生成的JSON文件导入到Framework7项目中,通过简单的代码调用即可播放动画。 除了加载动画之外,Framework7和Lottie的结合还可以用于创建其他类型的交互动画。例如,在用户点击按钮时,可以使用Lottie呈现一个逐渐变大的放大效果;在滑动屏幕时,可以使用Lottie实现一个缩放和平移的过渡效果。这些动画的无缝集成可以让移动应用变得更具吸引力,提升用户对应用的好感度和使用体验。 总之,通过结合Framework7和Lottie,开发者可以带来更多的交互和动画效果,提升移动应用的质量和用户体验。这两个工具的组合将为开发者提供更多创造力和灵活性,使他们能够构建出更加具有吸引力和有趣度的移动应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值