
Android: Kotlin Splash
2020, May 07
Splash
App μ μ€ννμ¬ μ²μ 보μ¬μ£Όλ μΈνΈλ‘ νλ©΄, μ£Όλ‘ λ°μ΄ν°λ₯Ό λ‘λνλ μκ°λμ λ ΈμΆνλ©° μ± λ²μ , μ λ°μ΄νΈ μ¬λΆ λ±μ 체ν¬νλ λμ λ ΈμΆνλ€.
AndroidManifest.xml
splashλ μ± μ€νμ λ ΈμΆλλ―λ‘ adroidmanifest μ LAUNCHERλ₯Ό μ€μ ν΄μ€λ€.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.first.eplatztesttmpl">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:debuggable="true"
android:theme="@style/AppTheme"
tools:ignore="HardcodedDebugMode">
<activity android:name=".CalendarViewActivity"></activity>
<!-- Splash Activity -->
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!-- Splash Activity -->
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
</application>
</manifest>
SplashActivity.kt
μ±μ΄ μ€νλλ©΄ AndroidManifest μ€μ λλ‘ μ€νλμκ° μ€νλκ³ μ€μ λ λλ μ΄κ° μμλλ©΄ MainActivityκ° μ€νλλλ‘ νλ€. κ·Έ μ¬μ΄ api ν΅μ μ νμ¬ νμν λ°μ΄ν° λ° λ²μ 체ν¬λ₯Ό μ§ννλ€.
class SplashActivity : AppCompatActivity() {
val SPLASH_VIEW_TIME : Long = 3000 // 3μ΄κ° μ€νλμ νλ©΄ λ
ΈμΆ(ms)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
/**
* μ± μ€νμ, api ν΅μ
*/
var retrofit = Retrofit.Builder()
.baseUrl("http://192.168.0.101:9090")
.addConverterFactory(GsonConverterFactory.create())
.build()
//field λ³μ μμμ€μ
val a = "a"
var splashService = retrofit.create(ApiService::class.java)
splashService.requestApi(a).enqueue(object : Callback<ApiOutPut> {
override fun onFailure(call: Call<ApiOutPut>, t: Throwable) {
Log.d("DEBUG", t.message)
//μΉ ν΅μ μ μ€ν¨νμ λ μ€νλλ μ½λ
var dialog = AlertDialog.Builder(this@SplashActivity)
dialog.setTitle("μ€ν¨")
dialog.setMessage("ν΅μ μ μ€ν¨νμ΅λλ€.")
dialog.show()
}
override fun onResponse(call: Call<ApiOutPut>, response: Response<ApiOutPut>) {
//μΉ ν΅μ μ μ±κ³΅ , μλ΅κ°μ λ°μμ¨λ€
var code = response.body() // resultCode, resultMessage, resultData
var dialog = AlertDialog.Builder(this@SplashActivity)
dialog.setTitle("μλ")
dialog.setMessage("resultCode = "+ code?.resultCode + ", resultMessage = " + code?.resultMessage + ", resultData = " + code?.resultData)
dialog.show()
}
})
//setting start activity after delay
Handler().postDelayed({
startActivity(Intent(this,MainActivity::class.java))
},SPLASH_VIEW_TIME)
setContentView(R.layout.activity_main)
}
}