Android Splash: 詳解安卓啟動頁

一、安卓手機 Android Splash

在安卓開發中啟動頁是非常重要的一個部分,它是 App 加載的第一畫面,也是用戶第一次接觸到 App 的地方,對於用戶體驗非常重要。Android Splash 也稱為啟動頁、閃屏頁或者歡迎頁,其作用是在應用程序啟動時,展示一個品牌標誌或其它信息,給用戶一個良好的第一印象。在應用的運行過程中,Splash 可以為用戶提供緩衝時間,以便加載其它主要 UI,從而加快應用程序的響應速度,保持應用程序的流暢體驗。

二、Android Splashscreen關不掉

有些情況下,啟動頁會有個定時自動關閉的功能,即 Splashscreen。但是有時候我們想要讓用戶手動關閉 Splashscreen,如何實現呢?在此給出代碼示例:

public class MainActivity extends Activity {

    private boolean mIsBackKeyPressed = false;//記錄是否有首次按鍵
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                mIsBackKeyPressed = false;
            }
        }
    };

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

        ImageView splash = findViewById(R.id.img_splash);
        splash.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();//點擊圖片關閉 Splash
            }
        });
    }

    @Override
    public void onBackPressed() {
        if (!mIsBackKeyPressed) {
            Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
            mIsBackKeyPressed = true;
            mHandler.sendEmptyMessageDelayed(0, 2000);// 2s後恢復狀態
        } else {
            mHandler.removeMessages(0);
            super.onBackPressed();
        }
    }
}

這裡的思路是通過記錄按下返回鍵的時間來判斷用戶是否在短時間內(2 秒)再次按下返回鍵,如果是,則直接退出應用程序。

三、Android Splash 界面

Android Splash 界面設計上要簡單、美觀、易操作,閃屏的顯示時間盡量不要太長,一般來說2到4秒左右的時間比較合適,大於5秒則會顯得比較無聊。此外,啟動頁的設計要與 App 整體 UI 風格相符,提升用戶體驗,留下好印象,更有利於 App 的推廣和用戶留存。

四、Android Splashscreen 白屏

有時候 Android Splashscreen 的啟動頁會出現白屏的情況,這樣會讓用戶覺得 App 相應速度慢,給用戶不好的體驗,為了解決這個問題,我們可以在 XML 布局文件中加入 Window 的背景顏色:


 // 在這裡設置背景顏色

    


五、Android Splash Activity

Android Splash Activity 具體實現可以參考如下代碼:

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 加載 Splash 視圖
        setContentView(R.layout.activity_splash);

        // 向 Handler 延時發送啟動任務
        mHandler.sendEmptyMessageDelayed(START_ACTIVITY, DELAY_TIME);
    }

    // 常量
    private static final int START_ACTIVITY = 0;
    private static final int DELAY_TIME = 2000; // 延時2秒

    // Handler 消息處理
    private Handler mHandler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            switch (msg.what) {
                case START_ACTIVITY:
                    Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                    startActivity(intent);
                    finish();
                    break;
            }
            return true;
        }
    });
}

六、Android Splashscreen 廣告

一些 App 在啟動頁展示廣告,為了提高用戶體驗,廣告的內容需要與 App 的主題相關。

Android Splashscreen 廣告可以用類似 Glide、Picasso 等框架實現:

ImageView image = findViewById(R.id.img_ad);
Glide.with(this).load(adUrl).into(image);

這裡的思路是使用 Glide 加載廣告的圖片。

原創文章,作者:PDJD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/133346.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PDJD的頭像PDJD
上一篇 2024-10-03 23:58
下一篇 2024-10-03 23:58

相關推薦

  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控件。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論