Input/개발+App

[Android/Kotlin]Intro/Splash Fullscreen 구현 방식

우짜짜™ 2020. 5. 17. 22:01
반응형

앱 실행시 초기 인트로(Splash) 화면 구현에 필요한 방식은 2가지

1. 소스코드 추가

2. styles.xml 테마 속성 추가

 

UI/UX로 볼때 styles.xml 테마 속성을 추가하는 방식을 추천

 


 

1. 소스코드 적용 방식

 

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intro)

		//Fullscreen 적용
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE or
                View.SYSTEM_UI_FLAG_FULLSCREEN or
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    }

 

 

2. xml Theme 적용 방식

 ① res > values > styles.xml 속성추가

 

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- Fullscreen 적용 -->
    <style name="AppTheme.NoActionBar.Fullscreen">
        <item name="android:windowFullscreen">true</item>
        <item name="windowNoTitle">true</item>
    </style>

</resources>

 ② AndroidManifest.xml  테마적용

        <activity
            android:name=".IntroActivity"
            android:theme="@style/AppTheme.NoActionBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

 


★2초뒤 메인화면으로 넘어가는 방식 구현 예시

    var handler: Handler? = null
    var runnalbe: Runnable? = null

override fun onResume() {
        super.onResume()

        runnalbe = Runnable {
            var intent = Intent(this, MainActivity::class.java)
            startActivity(intent)
            finish()
        }

        handler = Handler()
        handler?.run {
            postDelayed(runnalbe, 2000)
        }
    }

    override fun onPause() {
        super.onPause()

        handler?.removeCallbacks(runnalbe)
    }

 

 

반응형