真实不知道标题起什么主题好,这篇文章是一个对前一篇文章的填坑,也是开的新坑。我曾经说过要开一个Android的交互、动效或许规划的坑。由于自己比较菜,可是又比较感兴趣,这个系列也算是对Android交互的学习之旅,边学边做笔记。
看这篇文章之前主张先看看前一篇文章:
【Android爬坑周记】用SplashScreen做一个会动的开屏!
AVD动画开屏效果
(为了便利展现,我延长了几秒钟的开屏动画展现时刻)
SplashScreen
Android12以上加入了SplashScreen,官方的开屏动画!因而我在【小鹅事务所】加入了开屏动画。SplashScreen仅在冷发动或许温发动的时分会展现,支持AVD动画、帧动画,上篇文章我运用了帧动画来完结,这篇文章我将展现怎么运用AVD动画完结开屏动画。
动画制造
运用After Effects(AE)制造动画会比较便利,因而自己运用AE来完结这个开屏动画。加上Bodymovin插件能够直接将AE的合成导出为Json动画文件或许AVD动画文件。Json动画文件能够配合Lottie运用,而AVD即Animated Vector Drawable,Android的矢量动画。
关于动画是怎么制造的,此处就不赘述了,无非是Key关键帧的苦力活。
不过需求注意的是:每一个矢量形状都主张都只需一个内容(用钢笔的时分不要手抖多点一个点),不然可能导出来的AVD动画文件无法正常运用!!(Json不影响)
导出的时分运用Bodymovin来导出,Bodymovin下载地址:aescripts.com/bodymovin/。下载好之后点击窗口 → 扩展 → Bodymovin就能够运用啦!
一开始点进这个界面,Render按钮是灰色的,需求做三件事情:
-
找到并挑选需求烘托的合成
-
点击最右边的三个点,挑选导出的途径
-
点击点击设置按钮,找到AVD选项,挑选并保存。
此时回到外面Render按钮就能够点击了,点击就能够烘托了。
在刚刚挑选的途径找到烘托完结的AVD,直接拖进Android项目的drawable文件夹中,如下图。
代码十分长,也不易读,按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中调用installSplashScreen
,setKeepOnScreenCondition
能够控制动画展现事件,例如需求初始化完数据再进入APP,能够设置一个isAppInit标志,在初始化完设置为true就好。
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
splashScreen.setKeepOnScreenCondition { !isAppInit }
super.onCreate(savedInstanceState)
initView()
}
运行一下吧,AVD动画十分丝滑!快喊动效规划为APP制造一个丝滑的开屏动画吧!
总结
这篇文章不是入门文章,只是一次规划/开发作业流的初探,并没有写得太细。targetSdk 32以上的APP也比较少,能用上SplashScreen开屏动画的APP也比较少。
只需程序员把握一点规划、规划把握一点程序,交流起来也会便利许多!例如文章中的用AE制造AVD动画的一个坑也是在探究过程中发现的,如果在实际作业中遇到的话,我们对对方作业都不了解,就可能会评论换一种方法来完结了(MP4动画啥的),这对功能其实是更不友爱的。某个UI规划软件乃至能够直接导出Android Compose界面代码,后续我可能会试一下效果。