当前位置:   article > 正文

Android 启动画面_windowsplashscreenanimatedicon

windowsplashscreenanimatedicon

关于启动画面

Android 12 开始,在搭载 Android 12 或更高版本的设备上运行时,所有应用都将拥有启动动画。这包括启动时的进入应用动作、显示应用图标的启动画面,以及向应用本身的过渡。

出现的场景:

开机第一次启动应用

用户杀死进程

系统回收了应用内存(进程被杀死)。

就是应用程序的进程不存在或被杀死,用户再次打开应用就会启动这个启动画面。

启动画面加载结束后,显示我们的Activity(MAIN)界面。
构成:应用图标(1、2)(静态动态两种) 图标背景(3) 窗口背景(4) 组成

请注意以下几点

中心图标 (1)

矢量可绘制对象

静态或动画形式

如果为动画形式时间不得超过 1000 毫秒

如果要实现动画效果则可以使用 AnimationDrawableAnimatedVectorDrawable 呈现动画效果和进行绘制,那么还需要设置 windowSplashScreenAnimationDuration,以在显示起始窗口的同时播放动画

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

内容需要保留2/3的内边距,否则图标会被裁剪掉。

改变中间和下边的图片 效果:

请添加图片描述

这里我只配置了启动画面的两个属性,代码如下

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <!--替换起始窗口中心的图标-->
        <item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_center_img</item>
        <!--设置要显示在启动画面底部的图片-->
        <item name="android:windowSplashScreenBrandingImage">@drawable/ic_bottom_img</item> 
    </style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  <activity
            android:name=".MainActivity"
            android:theme="@style/SplashTheme"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

中心图标动态更换图片资源 效果:

这里只用纯色填充举例,可以切换成对应的图片资源
请添加图片描述
代码如下

        <!--动态更换图片-->
        <item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_animate</item>
         <!--设置动画时间-->
        <item name="android:windowSplashScreenAnimationDuration">1000</item>
  • 1
  • 2
  • 3
  • 4

splash_animate:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@color/purple_200" android:duration="250"/>
    <item android:drawable="@color/purple_500" android:duration="250"/>
    <item android:drawable="@color/purple_700" android:duration="250"/>
    <item android:drawable="@color/teal_200" android:duration="250"/>
</animation-list>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

纯色过度(将启动画面中的内容设置统一颜色)效果:

请添加图片描述
代码如下:

       <!--替换起始窗口中心的图标-->
        <item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_white</item>
        <!--设置启动画面图标后面的背景-->
        <item name="android:windowSplashScreenIconBackgroundColor">@color/white</item>
        <!--设置要显示在启动画面底部的图片-->
        <item name="android:windowSplashScreenBrandingImage">@drawable/ic_white</item>
        <!--特定的单色填充背景-->
        <item name="android:windowSplashScreenBackground">@color/white</item>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

利用代码对启动画面进行时间调整 效果:

请添加图片描述
代码如下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            getSplashScreen().setOnExitAnimationListener(splashScreenView -> {
                final ObjectAnimator slideUp = ObjectAnimator.ofFloat(
                        splashScreenView,
                        View.TRANSLATION_Y,
                        0f,
                        -splashScreenView.getHeight()
                );
                slideUp.setInterpolator(new AnticipateInterpolator());
                slideUp.setDuration(100L); //控制时间

                slideUp.addListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        splashScreenView.remove();   //移除启动画面
                    }
                });

                slideUp.start();
            });  //以此为例可以在监听中使用TASK、handler、timer等自定义控制启动页的显示时间
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

对以上内容感兴趣可以参考demo

了解更多内容请移至官方文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/144708
推荐阅读