返回

SharedPreferences助阵,打造仅显一次的软件引导界面

Android

编写环境

  • Android Studio Arctic Fox | 2020.3.1 Patch 3
  • Kotlin 1.6.10

前言

引导界面是应用程序启动时显示的第一个界面,通常用于向用户介绍应用程序的功能和使用方法。在Android应用程序中,引导界面通常是通过Activity来实现的。
在大多数情况下,引导界面只会显示一次,即在用户初次打开应用程序时。之后,应用程序就会直接进入主界面。为了实现这种效果,我们可以使用SharedPreferences来存储一个标志,表明用户是否已经看过引导界面。如果用户已经看过引导界面,那么就不再显示引导界面。

步骤

  1. 在应用程序的 res 目录下创建一个名为 xml 的目录,并在其中创建一个名为 activity_guide.xml 的布局文件。该布局文件用于定义引导界面的布局。
  2. activity_guide.xml 布局文件中,添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    tools:context=".GuideActivity">

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="欢迎使用我的应用程序"
        android:textSize="24sp"
        android:gravity="center" />

    <Button
        android:id="@+id/btn_start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始使用"
        android:onClick="startApp" />

</LinearLayout>
  1. 在应用程序的 src 目录下创建一个名为 java 的目录,并在其中创建一个名为 GuideActivity.java 的类文件。该类文件用于定义引导界面的行为。
  2. GuideActivity.java 类文件中,添加以下代码:
package com.example.myapplication;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class GuideActivity extends AppCompatActivity {

    private SharedPreferences sp;

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

        sp = getSharedPreferences("config", MODE_PRIVATE);
        boolean isFirstStart = sp.getBoolean("isFirstStart", true);

        if (!isFirstStart) {
            startMainActivity();
            return;
        }

        TextView tvTitle = findViewById(R.id.tv_title);
        Button btnStart = findViewById(R.id.btn_start);

        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startMainActivity();
            }
        });

        sp.edit().putBoolean("isFirstStart", false).apply();
    }

    private void startMainActivity() {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

效果演示

  • 引导界面:

引导界面

  • 主界面:

主界面

结语

在本文中,我们介绍了如何使用SharedPreferences来实现仅在初次启动时显示引导界面的效果。通过这种方式,我们可以为用户提供更好的体验,同时也可以节省应用程序的资源。