평소에 스플래시를 만들때에
class SplashActivity : AppCompatActivity() {
val SPLASH_VIEW_TIME: Long = 1000 // 1초간 스플래시 화면을 보여줌
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Handler().postDelayed({
startActivity(Intent(this, LoginActivity::class.java))
finish()
}, SPLASH_VIEW_TIME)
}
}
이런식으로 postDelayed를 이용해서 만들어주곤 했다.
하지만 이렇게 하게되면 스플래시는 로딩 되는 동안 띄우기 위해 만드는 건데 괜히 시간만 잡아먹고 그 후에 로딩이 되는 비효율적인 방식이 되어버린다.
그래서 찾아보던중 테마를 이용하여 구현하는 방식을 알게 되었다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorAccent"/>
<item android:drawable="@drawable/ic_launcher_foreground"
android:gravity="center"/>
</layer-list>
스플래시 화면으로 사용할 xml을 만들어준다.
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash</item>
</style>
스타일에서 아까 만든 화면을 연결해주고
<activity android:name=".MainActivity"
android:theme="@style/SplashTheme">
매니패스트에서 액티비티의 테마를 만든 스타일로 지정해준다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
그 후 액티비티가 생성되어 onCreate이 호출되었을 때, 테마를 기본 테마로 바꿈으로써 효율적인 스플래시 화면을 구성할 수 있다.
github.com/HanYeop/AndroidStudio-Practice/tree/master/SplashTest
HanYeop/AndroidStudio-Practice
AndroidStudio Practice. Contribute to HanYeop/AndroidStudio-Practice development by creating an account on GitHub.
github.com
참조 : velog.io/@pish11010/Android-Splash-Screen-%EA%B5%AC%ED%98%84