團隊衝刺第三天

今天主要做的是啓動頁的再一次優化,昨天的效果在啓動時會有一個白屏的效果出來,這並不我預想的

今天已經解決了這個問題,並且再閃屏後加了一個可以手動跳過的倒計時動畫。

 

解決方法,在上一篇衝刺的博客中閃屏動畫用的是在一個setContentView(View)來實現的,雖然這不是主要原因,但爲保證啓動速度,不要調用setContentView()方法。因爲Activity設置了layout,它在App完全初始化完成後纔會顯示,也會耗時。看到上面的解釋,我們得知theme的設置纔是這個白屏的原因,所以要改進這個問題要在theme上動手。

setContentView(R.layout.activity_splash);

一、修改上次的bug

現在的項目文件目錄,箭頭是改動的地方,話不多說上步驟

1.drawable下面放一張圖片,作爲開頭的閃屏

2.values下面的styles定義一個新的theme背景爲設置的閃屏圖片  >>>>  SplashActivityTheme

3.修改AndroidManifest.xml,把閃屏StartPageActivity作爲初始界面

<application

        android:allowBackup="true"

        android:icon="@mipmap/ic_launcher"

        android:label="@string/app_name"

        android:roundIcon="@mipmap/ic_launcher_round"

        android:supportsRtl="true"

        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">

        </activity>

        <activity

            android:name=".StartPageActivity"

 

            android:theme="@style/SplashActivityTheme">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

</application>

可以看到這個裏面用的theme就是剛剛定義的

4.StartPageActivity

import com.example.qidongdemo2.R;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

import android.view.animation.Animation.AnimationListener;

import android.widget.ImageView;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.WindowManager;

 

import androidx.appcompat.app.AppCompatActivity;

 

public class StartPageActivity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                WindowManager.LayoutParams.FLAG_FULLSCREEN);//設置全屏

        super.onCreate(savedInstanceState);

        Thread myThread = new Thread() {//創建子線程

            @Override

            public void run() {

                try {

                    sleep(5000);//使程序休眠一秒

                    Intent it = new Intent(getApplicationContext(), MainActivity.class);

                    startActivity(it);

                    finish();//關閉當前活動

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        };

        myThread.start();//啓動線程

    }

}

修改AndroidManifest.xml,註冊一個新的activity    InitAdvActivity

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章