今天主要做的是啓動頁的再一次優化,昨天的效果在啓動時會有一個白屏的效果出來,這並不我預想的
今天已經解決了這個問題,並且再閃屏後加了一個可以手動跳過的倒計時動畫。
解決方法,在上一篇衝刺的博客中閃屏動畫用的是在一個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