Android---启动页+闪屏页

目录

启动页

闪屏页


 

启动页

app 在进入首页面的过程中,都会线加载一张图片然后再进入闪屏页。这样,可以给用户很好的体验。

作用:避免加载白屏页面,进行业务的预处理(网络检测、数据预加载...)

界面组成:Logo、背景图、版本号等。

步骤1: src-->main-->res-->values-->themes-->themes.xml 下新建一个 style。设置启动页

    <!-- 设置启动页的 style -->
    <style name="Theme.Pager" parent="Theme.ScreenAdapter" >
        <item name="android:windowBackground">@drawable/dp</item> // 设置启动页背景图片
        <item name="android:windowFullscreen">true</item> // 设置背景图片为全屏显示
        <item name="android:navigationBarColor">@android:color/transparent</item> // 设置导航栏透明

    </style>

步骤2:在 AndroidManifest.xml 里设置这个主题

步骤3: 如果就只是这样设置的话,我们会发现,在启动页完成并到达主页之后,这个背景图片还存在,所有我们需要重新将app的主题设置成原来的那样。所以,我们在 onCreate 方法里设置原主题。


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Theme_StartPagerTest); // 设置为原主题
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

闪屏页

作用:广告、营销推广。

界面组成:广告、跳过(倒计时按钮)。

步骤1:新建 SplashActivity.java 。并在 AndroidManifest.xml 里将启动页设置为 SplashAcrivity。

 步骤2:activity_splash.xml

布局中有一个 Button,用来实现点击”跳过“的功能。可以在倒计时内提前跳过闪屏页。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/img"
    tools:context=".SplashActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="50dp"
        android:textColor="@color/white"
        android:text="My App"
        tools:ignore="HardcodedText,SpUsage"
        android:gravity="center"
        />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳过"
        android:layout_gravity="right"
        android:layout_marginTop="35dp"
        android:layout_marginRight="35dp"
        tools:ignore="HardcodedText,RtlHardcoded" />

</FrameLayout>

步骤3:SplashActivity.java

package com.example.screenadapter;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.widget.Button;

public class SplashActivity extends AppCompatActivity {

    private Button button; // "跳过" 按钮
    private Handler handler = new Handler();
    TimeCount timeCount;
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            toMainActivity();
        }
    };

    /**
     *TODO 闪屏页 --》 最开始功能界面(首页面)
     */
    private void toMainActivity() {
        startActivity(new Intent(this, MainActivity.class));
        finish();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Theme_ScreenAdapter);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        
        initViews();
        //延迟 3s 发送,即当用户不主动点击跳过时,3s 后自动结束
        handler.postDelayed(runnable, 3000);

        timeCount = new TimeCount(4000, 1000);
        timeCount.start();
    }

    /**
     * 初始化 View
     */
    private void initViews() {
        button = findViewById(R.id.button);
        button.setOnClickListener(v -> {
            toMainActivity();
        });
    }

    // 倒计时计时器
    class TimeCount extends CountDownTimer{


        public TimeCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @SuppressLint("SetTextI18n")
        @Override
        public void onTick(long l) {
            // 设置倒计时
            button.setText(l / 1000 + "s");
        }

        @Override
        public void onFinish() {
            // 移除掉 runnable 方法
            handler.removeCallbacks(runnable);
        }
    }
}

其中,toMainActivity() 方法里实现了由 SplashActivity(闪屏页)跳转到 MainActivity(首页面)。我们在 button(跳过)按钮和”倒计时“结束时触发它。当用户点击”跳过“ 按钮,可以提前结束倒计时进入首页面,也可以等到倒计时结束时自动跳转到首页面。

Android 应用程序中,闪屏是一个启动,通常用于展示应用程序的 Logo 或者欢迎语,同时在后台加载应用程序的内容。实现一个简单的闪屏,可以按照以下步骤进行操作: 1. 在项目的 res/layout 目录下创建一个布局文件,例如 splash_screen.xml,该布局文件包含一个 ImageView 控件,用于展示应用程序 Logo。 2. 在项目的 res/drawable 目录下添加应用程序的 Logo 图片,例如 logo.png。 3. 在 AndroidManifest.xml 文件中指定应用程序的启动为 splash_screen.xml 文件。 4. 在应用程序启动时,将闪屏展示出来,并在后台加载应用程序的内容。可以使用 Handler 或者 CountDownTimer 实现延时操作,并在延时结束后跳转到应用程序的主界面。 以下是一个简单的闪屏的实现示例代码: splash_screen.xml ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/splash_screen_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/logo_image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/logo" /> </RelativeLayout> ``` MainActivity.java ```java public class MainActivity extends AppCompatActivity { // 延时时间,单位为毫秒 private static final long SPLASH_DELAY_TIME = 2000; private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 显示闪屏 setContentView(R.layout.splash_screen); // 延时跳转到主界面 mHandler.postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(MainActivity.this, HomeActivity.class); startActivity(intent); finish(); } }, SPLASH_DELAY_TIME); } } ``` 需要注意的是,闪屏只是应用程序的一个启动,不应该过于复杂,以免影响应用程序的启动速度。闪屏的展示时间应该尽量短,一般不超过 3 秒。同时,闪屏也不应该包含应用程序的主要功能,以免用户误解。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别偷我的猪_09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值