(kotlin) splash screen + overridePendingTransition

박용석·2023년 8월 14일
0

스플래시 스크린과 애니메이션을 활용하여 간단한 실습을 진행해보자.

먼저 res > New < Android Resource Directory > New Resource Directory > anim 폴더 생성해준다.

그리고 생성한 폴더 anim > New > Animation Resource File을 생성해준다.

slide_down_enter.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromYDelta="-100%"
        android:toYDelta="0%"/>
</set>

duration -> 이동 애니메이션이 총 500밀리초(0.5초) 동안 실행 될 것을 나타낸다.

fromYDelta -> 이동 애니메이션이 시작되는 Y축의 위치이다.
"-100%"는 뷰의 높이(-Y 방향)의 100% 위로 이동한다는 것을 의미한다.
즉, 뷰가 화면 위로 이동하여 사라지게 된다

toYDelta -> 이동 애니메이션이 도달할 Y축 위치이다.
"0%"는 뷰의 현재 위치(시작 위치)를 나타낸다. 따라서
뷰가 화면에서 사라진 후 다시 처음 위치로 이동하게 된다.

마찬가지 방법으로 xml 파일을 하나 더 만들어준다.
slide_down_exit.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromYDelta="0%"
        android:toYDelta="-100%"/>
</set>

2개의 animation xml 을 만들었다면 res > layout > New > Activity > Empty Views Activity 에서 SplashActivity를 하나 생성해준다.

app > manifests > AndroidManifest.xml 파일에서 name을 서로 바꿔준다.
android:name=".MainActivity" <-> android:name=".SplashActivity"
(이 두개의 이름을 위치만 바꿔서 스플래시 스크린이 먼저 들어오게함)

그리고 아래와 같은 코드를 SplashActivity에 입력해준다.

package com.example.example1

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)
	
        Handler(Looper.getMainLooper()).postDelayed({
			// 일정 시간이 지나고 MainActivity로 이동
            val intent = Intent(this,MainActivity::class.java)
            startActivity(intent)
           // 액티비티 전환 시 애니메이션 효과를 설정 overridePendingTransition(R.anim.slide_down_enter,R.anim.slide_down_exit)
           // 새로운 액티비티로 전환되면 현재 액티비티는 종료
            finish()
        }, 1500) // 1.5초 이후 실행
    }
}

Handler 클래스를 사용해서 일정 시간 지연 이후 코드를 실행시켰다.
일정 시간이 지나면 MainActivity로 이동하며 액티비티 전환 시 애니메이션 효과를 설정했다.
overridePendingReansition(들어오는애니메이션, 나가는애니메이션)을 anim 폴더에 작성했던 .xml 파일을 불러와 값을 넣어줬다.

결과물

profile
슬기로운 개발 활동

0개의 댓글