온라인 코틀린 강좌 들으면서 디자인을 고려하여 Material Design 구글 검색 참조 및 코드 보완 테스트 하고 있다.
구글 검색어 : android kotlin splash
검색어로 찾을 결과 https://levelup.gitconnected.com/a-tutorial-on-building-a-splash-screen-with-kotlin-in-android-studio-dc647cd52f9b 를 참조했고, UI 관련 파일 내용은 약간 다르다.
앱 build.gradle
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions'
android { compileSdkVersion 29 buildToolsVersion "29.0.3"
defaultConfig { applicationId "com.link2me.android.splash" minSdkVersion 23 targetSdkVersion 29 versionCode 1 versionName "1.0" }
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 }
}
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.android.material:material:1.0.0' } |
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.link2me.android.splash">
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".SplashActivity" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:theme="@style/AppTheme.DayNight"/>
</application>
</manifest> |
color.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#00A99D</color> <color name="colorPrimaryDark">#00574B</color> <color name="colorPrimaryDarker">#CC1D1D</color> <color name="colorAccent">#D81B60</color>
<color name="colorBlack">#ff000000</color> <color name="colorWhite">#ffffffff</color>
<color name="colorGray">#ff8a8a8a</color> <color name="colorDarkGray">#4c4c4e</color> <color name="colorLightGray">#ffeaeaea</color>
<color name="colorMint">#ff00c0aa</color> <color name="colorLightMint">#1000c0aa</color>
<color name="colorJet">#222222</color> <color name="colorOil">#333333</color> <color name="colorMonsoon">#777777</color> <color name="colorJumbo">#888888</color> <color name="colorAluminum">#999999</color> <color name="colorBase">#AAAAAA</color> <color name="colorIron">#CCCCCC</color> </resources> |
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>
<!-- This style is for the splash screen --> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
<style name="AppTheme.DayNight" parent="Theme.AppCompat.DayNight.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item>
<item name="colorControlNormal">@color/colorIron</item> <item name="colorControlActivated">@color/colorWhite</item> <item name="colorControlHighlight">@color/colorWhite</item> <item name="android:textColorHint">@color/colorIron</item>
<item name="colorButtonNormal">@color/colorPrimaryDarker</item> <item name="android:colorButtonNormal">@color/colorPrimaryDarker</item> </style>
<style name="AppTheme.Dark.Dialog" parent="Theme.AppCompat.Dialog"> <item name="colorAccent">@color/colorWhite</item> <item name="android:textColorPrimary">@color/colorIron</item> <item name="android:background">@color/colorPrimary</item> </style> </resources> |
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SplashActivity">
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/bg_splash"/>
</androidx.constraintlayout.widget.ConstraintLayout> |
SplahsAcitivity.kt
import android.content.Intent import android.os.Bundle import android.os.Handler import androidx.appcompat.app.AppCompatActivity
class SplashActivity : AppCompatActivity() { private val SPLASH_TIME_OUT:Long = 2000 // 2 sec
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash)
Handler().postDelayed({ startActivity(Intent(this,MainActivity::class.java)) finish() // close this activity }, SPLASH_TIME_OUT) } } |
위 예제코드 파일
slpah_src.zip