앱이 준비되는동안 사용자에게 보여줄 Splash화면을 구현하는 방법!
보통 스플래시 화면을 띄우는 방법을 생각했을 때, inflate를 이용해 레이아웃 화면을 그리고, 몇 초 띄웠다가 메인화면으로 넘어가는 식을 생각하기 쉽다. 이는 Thread-Handler를 사용하는 방법인데,
Handler는 지정한 시간 후에 화면이 넘어가게 하는 방법으로, 개발자가 딜레이 시간을 지정할 수 있다.
나는 단순히 앱 로딩 때만 스플래시 화면을 띄우다가, 로딩이 끝나면 메인화면으로 전환되는 스플래시를 띄우고 싶었고,
여기서는 레이아웃 화면을 만들지 않고 Activity 테마 배경을 변경하는 방식으로 진행해보았다.
splash 구현하기
1. drawble 폴더에 xml 파일 만들기
가장 먼저 drawble 폴더에 background_splash.xml 파일을 만들어주고, 스플래시 화면의 배경과 이미지를 설정해준다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 배경 -->
<item
android:drawable="@drawable/splash_background"/>
<!-- 로고 -->
<item>
<bitmap
android:gravity="center"
android:src="@drawable/splash_logo"/>
</item>
</layer-list>
배경은 단색 컬러로 줘도 되지만, 나는 따로 배경이미지가 있어서 그 이미지를 넣어줬다.
2. values/style.xml 수정
values 폴더에 styles.xml 파일에 style을 추가해준다. 이름은 SplashTheme으로 줬다.
<resources>
...
<!-- 스플래시 테마 설정을 위해 SplashTheme 스타일 추가 -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
3. SplashActivity.kt 생성
스플래시 화면이 끝나면 메인화면이 뜨게 하기위해 intent를 통해 MainActivity.class로 넘어가도록했다.
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val intent = Intent(this, MainActivity::class.java) // 메인 액티비티로 화면 넘어감
startActivity(intent)
finish()
}
}
4. AndroidManifest.xml 수정
manifests/AndroidManifest.xml 에 스플래시 화면이 가장 먼저 실행될 수 있도록 코드를 변경해준다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.matdog">
<application
...
<activity android:name=".main.MainActivity" />
<!-- 시작 액티비티를 SplashActivity로 설정, android:theme를 SplashTheme로 설정 -->
<activity android:name=".main.SplashActivity" android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
이 때 android:theme를 SplashTheme로 설정해준다!
'Android Studio' 카테고리의 다른 글
[Android/Kotiln] 비밀번호 일치 여부 (0) | 2021.04.09 |
---|---|
[Android/Kotiln] style.xml(스타일 및 테마)를 활용하여 속성 설정하기 (0) | 2021.04.09 |
[Android] 스피너 spinner (0) | 2020.04.30 |
[Android] 레이팅 바 (0) | 2020.04.30 |
[Android] 이미지버튼 이미지 크기 맞추기 (0) | 2020.04.30 |