Splash
- 앱을 열 때 기본적으로 나타나는 화면
- 회사로고, 광고, 콘텐츠 등을 고정된 시간동안 표시하거나 or 앱이 완전히 로드되는 동안 사용자에게 잠시 보여지고 사라지는 화면
방식1) 핸들러를 이용해서 고정시간동안 splash화면을 보여주는 방식
→ 이 방식은 무조건 고정시간동안 UX표시하므로 불필요하게 시간 뺏을 수도 있음
1. activity_splash.xml 파일 생성
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:layout_width="190dp"
android:layout_height="90dp"
android:src="@drawable/ic_logo"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
2. SplashActivity.kt
class SplashActivity : AppCompatActivity() {
lateinit var binding : ActivitySplashBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySplashBinding.inflate(layoutInflater)
setContentView(binding.root)
//1초 뒤에 다음 메인화면이 나오도록 설정
val handler = Handler(Looper.getMainLooper())
handler.postDelayed({
startActivity(Intent(this, MainActivity::class.java))
}, 1000)
}
}
3. Manifest에 SplashActivity등록
<activity android:name=".MainActivity"/>
<activity
android:name=".SplashActivity"
android:exported="true"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<intent-filter>로 첫 시작화면 지정
방식2) 시작테마에 안드로이드OS에서 제공하는 style을 지정하여 보여주는 방식
→ 이 방식은 앱이 완전히 로드된 이후에 액티비티가 보여지는 방식 (⭐추천)
1. drawable폴더에 splash.xml 설정
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 배경을 하얗게 -->
<item android:drawable="@color/white"/>
<!-- 이미지 가운데에 위치시키기 -->
<item>
<bitmap android:src="@drawable/ic_logo"
android:gravity="center"/>
</item>
</layer-list>
2. values폴더의 themes.xml파일에서 splash테마 추가
<!-- 스플래시 화면을 위한 테마 -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground"> @drawable/splash </item>
<item name="android:statusBarColor"> @color/transparent </item> <!-- statusBar색상 투명 -->
</style>
3. manifest파일에서 MainActivity에 splash테마 적용
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
4. MainActivity.kt 파일에서 앱이 실행되었을 때는 다시 원래의 테마로 돌려주기
class MainActivity: AppCompatActivity(){
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstance: Bundel?){
super.onCreate(savedInstance)
setTheme(R.style.Theme_ORIGIN)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
'Android > Android Studio' 카테고리의 다른 글
[안드로이드/Kotlin] Retrofit2 + okhttp 개념 (0) | 2022.06.27 |
---|---|
[안드로이드/Kotlin] Thread개념 및 예제 (0) | 2022.05.19 |
[안드로이드/Kotlin] ViewPager2 + TabLayout 사용 (0) | 2022.05.12 |
[안드로이드/Kotlin] BottomNavigationView 사용, Fragment 전환 (0) | 2022.05.12 |
[안드로이드/Kotlin] ViewBinding 사용 (0) | 2022.05.12 |