스플래시 스크린과 애니메이션을 활용하여 간단한 실습을 진행해보자.
먼저 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 파일을 불러와 값을 넣어줬다.
결과물