默认情况下,使用启动图标。
🔥 启动画面的工作原理
============
当用户启动应用而应用的进程未在运行(冷启动)或 Activity 尚未创建(温启动)时,会发生以下事件。(在热启动期间从不显示启动画面。)
系统使用主题以及您已定义的任何动画显示启动画面。
当应用准备就绪时,会关闭启动画面并显示应用。
关于应用启动模式可以参考:Android 性能优化之启动优化。
🔥 动画的元素和机制
===========
动画的元素由 Android 清单中的 XML 资源文件定义。每个元素都有浅色模式和深色模式版本。
它们由窗口背景、动画形式的应用图标和图标背景组成:
关于这些元素,请注意以下几点:
应用图标 (1) 应该是矢量可绘制对象,它可以是静态或动画形式。不超过 1000 毫秒。默认情况下,使用启动图标。
图标背景 (2) 是可选的,在图标与窗口背景之间需要更高的对比度时很有用。如果您使用一个自适应图标,当该图标与窗口背景之间的对比度足够高时,就会显示其背景。
与自适应图标一样,前景的三分之一被屏蔽(3)。
窗口背景 (4) 由不透明的单色组成。如果窗口背景已设置且为纯色,则未设置相应的属性时默认使用该背景。
启动画面动画机制由进入动画和退出动画组成。
进入动画由系统视图到启动画面组成。这由系统控制且不可自定义。
退出动画由隐藏启动画面的动画运行组成,可以对其自定义。如果你要对其进行自定义,你将可以访问 SplashScreenView 及其图标,并且可以在它们之上运行任何动画(需要设置转换、不透明度和颜色)。在这种情况下,当动画完成时,需要手动移除启动画面。
🔥 自定义应用中的启动画面
==============
💥 设置主题属性以更改其外观
🌀 设置启动画面背景颜色
设置了淡紫色的背景图。
效果图:
代码如下:
AndroidManifest.xml设置主题:
<application
android:allowBackup=“true”
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:supportsRtl=“true”
android:theme="@style/Theme.SccMall.SplashScreen">
🌀 设置中间显示的图标
中心图标大图,内容需要保留2/3的内边距,否则图标会被裁剪掉。
设置透明的静态图标
图标如下:
效果图:
代码如下:
设置透明的动态图标
效果图:
代码如下:
splash_animate_icon.xml
<?xmlversion="1.0"encoding="utf-8"?>
<animation-listxmlns:android=“/apk/res/android”
android:oneshot=“false”>
🌀 设置图标的背景颜色
设置了紫色的图标背景颜色。如果图标背景不透明,会被遮挡效果无法看出。
效果图:
代码如下:
🌀 画面底部的图片(尺寸比例需要为 2.5:1,谷歌不推荐用)
效果图:
这里使用的尺寸是500:200。
代码如下:
💥 最终效果
效果:
代码如下:
💥 让其在屏幕上显示更长时间
启动画面最长1000毫秒。如果你的广告页需要更多时间来加载数据,谷歌也提供了让其显示更长时间的方法,咱们一起来试试。
效果:
跟上面对比明显发现时间延长了不少。
代码如下:
publicclassAdvertis
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享
eActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
…
//延长启动画面显示时间
extendDisplayTime();
}
//延长启动画面显示时间
privatevoidextendDisplayTime(){
MyViewModelmyViewModel=newMyViewModel(getApplication());
//SetupanOnPreDrawListenertotherootview.
finalViewcontent=findViewById(android.R.id.content);
content.getViewTreeObserver().addOnPreDrawListener(
newViewTreeObserver.OnPreDrawListener(){
@Override
publicbooleanonPreDraw(){
//检查初始数据是否准备好。
if(myViewModel.isReady()){
//取消挂起,内容准备好了。
content.getViewTreeObserver().removeOnPreDrawListener(this);
returntrue;
}else{
//挂起,内容未准备好。
returnfalse;
}
//如果仅returnfalse,则会产生一个永久显示SplashScreen的效果。
}
});
}
publicclassMyViewModelextendsAndroidViewModel{
publicMyViewModel(Applicationapplication){
super(application);
}
privatelongstartUptimeMillis=SystemClock.uptimeMillis();
publicbooleanisReady(){
returnSystemClock.uptimeMillis()-startUptimeMillis>3000;
}
}
}
💥 自定义用于关闭启动画面的动画
效果:
代码如下:
publicclassAdvertiseActivityextendsAppCompatActivity{
ActivityAdvertiseBindingbinding;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
…
//关闭动画
spplashScreenCloseAnimation();
}
privatevoidspplashScreenCloseAnimation(){
//添加一个回调,当启动画面为应用内容设置动画时调用。
getSplashScreen().setOnExitAnimationListener(splashScreenView->{
finalObjectAnimatorslideUp=ObjectAnimator.ofFloat(
splashScreenView,
View.TRANSLATION_Y,
0f,
-splashScreenView.getHeight()
);
slideUp.setInterpolator(newAnticipateInterpolator());
slideUp.setDuration(2000);
//在自定义动画结束时调用splashScreenView.remove();
slideUp.addListener(newAnimatorListenerAdapter(){
@Override
publicvoidonAnimationEnd(Animatoranimation){
//移除启动画面
splashScreenView.remove();
}
});
//启动动画
slideUp.start();
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
上面分享的腾讯、头条、阿里、美团、字节跳动等公司-的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
【Android高级架构视频学习资源】
//在自定义动画结束时调用splashScreenView.remove();
slideUp.addListener(newAnimatorListenerAdapter(){
@Override
publicvoidonAnimationEnd(Animatoranimation){
//移除启动画面
splashScreenView.remove();
}
});
//启动动画
slideUp.start();
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
上面分享的腾讯、头条、阿里、美团、字节跳动等公司-的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
[外链图片转存中…(img-VDH4MjS6-1640917259150)]
【Android高级架构视频学习资源】
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录