真实不知道标题起什么主题好,这篇文章是一个对前一篇文章的填坑,也是开的新坑。我曾经说过要开一个Android的交互、动效或许规划的坑。由于自己比较菜,可是又比较感兴趣,这个系列也算是对Android交互的学习之旅,边学边做笔记。

看这篇文章之前主张先看看前一篇文章:

【Android爬坑周记】用SplashScreen做一个会动的开屏!

AVD动画开屏效果

(为了便利展现,我延长了几秒钟的开屏动画展现时刻)

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

SplashScreen

Android12以上加入了SplashScreen,官方的开屏动画!因而我在【小鹅事务所】加入了开屏动画。SplashScreen仅在冷发动或许温发动的时分会展现,支持AVD动画、帧动画,上篇文章我运用了帧动画来完结,这篇文章我将展现怎么运用AVD动画完结开屏动画。

动画制造

运用After Effects(AE)制造动画会比较便利,因而自己运用AE来完结这个开屏动画。加上Bodymovin插件能够直接将AE的合成导出为Json动画文件或许AVD动画文件。Json动画文件能够配合Lottie运用,而AVD即Animated Vector Drawable,Android的矢量动画。

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

关于动画是怎么制造的,此处就不赘述了,无非是Key关键帧的苦力活。

不过需求注意的是:每一个矢量形状都主张都只需一个内容(用钢笔的时分不要手抖多点一个点),不然可能导出来的AVD动画文件无法正常运用!!(Json不影响)

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

导出的时分运用Bodymovin来导出,Bodymovin下载地址:aescripts.com/bodymovin/。下载好之后点击窗口 → 扩展 → Bodymovin就能够运用啦!

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

一开始点进这个界面,Render按钮是灰色的,需求做三件事情:

  • 找到并挑选需求烘托的合成

  • 点击最右边的三个点,挑选导出的途径

  • 点击点击设置按钮,找到AVD选项,挑选并保存。

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

此时回到外面Render按钮就能够点击了,点击就能够烘托了。

在刚刚挑选的途径找到烘托完结的AVD,直接拖进Android项目的drawable文件夹中,如下图。

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

代码十分长,也不易读,按Ctrl + Alt + L(CMD + option + L)格式化之后,会看到十分多的objectAnimator或许path之类的代码,实际上在Android读完这个文件之后会生成相应的动画代码,并在跑起来的时分运行对应的动画代码。

在themes文件中为SplashScreen设置对应的动画文件,该Theme需求承继Theme.SplashScreen。

    <style name="Theme.AppSplashScreen" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/primary_color</item>
        <item name="windowSplashScreenAnimatedIcon">@drawable/anim_little_goose</item>
        <item name="windowSplashScreenAnimationDuration">3000</item>
        <item name="postSplashScreenTheme">@style/Theme.Account</item>
    </style>

在Manifest中为发动Activity设置为该Theme。

        <activity
            android:name=".ui.MainActivity"
            android:theme="@style/Theme.AppSplashScreen"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

在该Activity中调用installSplashScreensetKeepOnScreenCondition能够控制动画展现事件,例如需求初始化完数据再进入APP,能够设置一个isAppInit标志,在初始化完设置为true就好。

    override fun onCreate(savedInstanceState: Bundle?) {
        val splashScreen = installSplashScreen()
        splashScreen.setKeepOnScreenCondition { !isAppInit }
        super.onCreate(savedInstanceState)
        initView()
    }

运行一下吧,AVD动画十分丝滑!快喊动效规划为APP制造一个丝滑的开屏动画吧!

【Android爬坑月记】用一个开屏动画来看动效/开发工作流!(AVD版)

总结

这篇文章不是入门文章,只是一次规划/开发作业流的初探,并没有写得太细。targetSdk 32以上的APP也比较少,能用上SplashScreen开屏动画的APP也比较少。

只需程序员把握一点规划、规划把握一点程序,交流起来也会便利许多!例如文章中的用AE制造AVD动画的一个坑也是在探究过程中发现的,如果在实际作业中遇到的话,我们对对方作业都不了解,就可能会评论换一种方法来完结了(MP4动画啥的),这对功能其实是更不友爱的。某个UI规划软件乃至能够直接导出Android Compose界面代码,后续我可能会试一下效果。