1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android 12 启动画面-SplashScreen 面试看这个就够了

Android 12 启动画面-SplashScreen 面试看这个就够了

时间:2024-02-17 22:59:15

相关推荐

Android 12 启动画面-SplashScreen 面试看这个就够了

默认情况下,使用启动图标。

🔥 启动画面的工作原理

============

当用户启动应用而应用的进程未在运行(冷启动)或 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学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。