Kotlin
StartActivity
앱의 시작은 Splash 화면이죠. ㅎㅎ;
이건 사람마다 호불호가 갈립니다.
"splash 화면에서 불필요한 시간을 낭비한다"
"회사의 로고 같은 광고 효과도 있다"
"최초 리소스를 로드하는데 보여주는 것이다"
등등..
전, 2~3초 정도로 앱의 로고든, 이미지든 광고효과가 좋다고 생각해서 주로 splash 화면을 만드는 편입니다.
kotlin 에서 new > Activity > FullScreenActivity 로 해봤는데, 뭔가 잡다한게 많이 뜨더군요.
그냥 new > Activity > EmptyActivity 로 생성합니다.
Launcher Activity 에 체크해주세요.
전 이름을 SplashActivity 로 했습니다.
layout 과 소스 파일이 생깁니다.
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
}
}
이렇게 하면 layout 에 지정한대로, (보통 ImageView씁니다.) 화면이 뜨겠죠.
여기서 FullScreen 이 되지 않아서 별로 이쁘지 않네요.
FullScreen 으로 변경하는 쉬운 방법은, 이전 글 참고해 주세요.
[Android] Activity Full Screen 만들기 ( 전체화면 )
그럼 이제 일정 시간 후에 MainActivity로 넘어가야겠네요.
우선 MainActivity 로 넘어가기 위해서 Intent 를 사용해야 합니다.
(파라메터가 없을 경우)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
일정 시간 후에 넘어가도록 하려면, Handler 를 사용해야 하는데,
보시는 것처럼 Empty Argument 생성자는 deprecated 되었습니다.
파라메터가 필요합니다.
Handler(Looper.getMainLooper()).postDelayed({
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}, delayMillis.toLong())
함수를 만들어서 기능을 사용해 봤습니다.
전체 코드
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.appcompat.app.AppCompatActivity
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
delayedMove(3000)
}
private fun delayedMove(delayMillis: Int) {
Handler(Looper.getMainLooper()).postDelayed({
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}, delayMillis.toLong())
}
}
3초 후에 MainActivity 로 이동됩니다.
Intent 에 파라메너 넘기고 받는 방법
생성된 Intent 객체에서 intent.put.. 까지만 입력해도 많은 인자 타입의 함수가 나옵니다.
여기서 골라서 쓰시면 됩니다. 파라메터의 타입을 보고, 알아서 사용됩니다.
// SplashActivity.kt
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("USER_NAME", "hello~ bryan~")
startActivity(intent)
이렇게 MainActivity 로 파라메터를 전달하게 되면,
// MainActivity.kt
val userName: String? = intent.getStringExtra("USER_NAME")
이렇게 받아오면 됩니다.
받아올 땐, 타입에 따라 함수를 골라서 사용해야 합니다.
'Android' 카테고리의 다른 글
[Android] BuildConfig 오류 Cannot resolve symbol 'BuildConfig' 해결 (0) | 2022.03.04 |
---|---|
[Android] Java 에서 Kotlin 으로 넘어가기 4. Fragment (0) | 2022.02.27 |
[Android] Java 에서 Kotlin 으로 넘어가기 2. OnClick (0) | 2022.02.23 |
[Android] Java 에서 Kotlin 으로 넘어가기 1. findViewById (0) | 2022.02.23 |
[Android] api29 이상. MediaStore DATE_MODIFIED 을 날짜 형식으로 가져오기 (0) | 2020.09.12 |
댓글