본문 바로가기

Android/Android Lecture

안드로이드 강의 6. Handler를 이용한 Splash화면 구현

너무 빨리 왔나요? ㅎㅎ,,,

어쨌든 다시 돌아온 효그니에여 ><~

이번 차시에는 Handler를 사용해서 Splash화면을 구현해볼거에요

일단 Handler가 뭔지 바로 알아보실까요?

사실 Handler라고 하면 사실 여러가지의 의미가 있어요.

일단 차를 운전할때 핸들이라던가 <-퍽

Handler의 종류로는! 

interrupt handler: 인터럽트 접수에 대응하여 특정 기능을 처리하는 기계어 코드 루틴

java.util.logging.handler : 자바 프로그램 진행중 발생한 로그를 출력하는 방법을 다루는 클래스

android.os.Handler : 이번에 다룰 핸들러

이렇게  있는데, 

먼저 안드로이드 핸들러는 Thread, Message, Lopper등과 관련이 있어요!

자 그렇다면 핸들러는 어떤 구조로 동작하는 걸까요?

Looper+MessageQueue=Handler 

라고 생각하시면 편해요.

기본 생성자를 통해 Handler를 생성하면, 새롭게 생성된 Handler는 해당 생성자가 호출된

그 Thread의 MessageQueue, Looper에 자동으로 연결되요

자, 핸들러를 이해했으면 써먹어야겠죠?

안드로이드 스튜디오를 켜주세요!

 

 

activity_splash를 만들어줘요!

그리고 SplashActivity도 만들어줘요!

일단 activity_splash에 TextView로 스플래쉬라고 써볼까요?

 

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="SPLASH"
        android:gravity="center"
        android:textSize="40dp"
        android:textColor="#FFF"
        android:background="#efc6c6"
        />

자 그럼 스플래시 화면 구별도 해두었으니... SplashActivity로 이동해볼까요?

여기에서 소스를 짜봅시다

 

  val handler = Handler()
        handler.postDelayed({
            val intent = Intent(baseContext, MainActivity::class.java)
            startActivity(intent)
            finish()
        }, 3000)

handler를 사용하여 Delay를 주고, 3000밀리세컨(3초) 후 MainActivity가 실행되게 하는 소스입니다.

이제 AndroidManifest.xml로 이동하여

 <activity android:name=".MainActivity"/>
        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

이렇게 intent.action.MAIN런쳐 에는 SplashActivity를, activity에 MainActivity를 넣어서 스플래시 액티비티를 먼저 실행하게 합니다.

이제 한번 앱을 실행해 볼까요?

정상적으로 SplashActivity가 실행된 후, 3초 뒤!!!

SplashActivity가 종료되고 MainActivity로 넘어갔습니다.

여러분은 오늘 Handler를 배웠어요!!! 

와~!!! 드디어 Splash화면을 띄울 수 있게 되었습니다.

추후에 Lottie나 Glide같은 여러 라이브러리들과 연계되어 활용성이 무궁 무진한 화면이기에 

제대로 기억해두는점이 좋을것 같습니다!

오늘도 좋은하루 되세요!! ^~^