-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[UI/#35] splash screen 구현 #38
Changes from 3 commits
81192ab
3afef29
7af74b5
ad47a4e
7eec71f
d83589e
9109ae7
63a0734
a32c2f0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -41,6 +41,7 @@ object Versions { | |
const val junitVersion = "4.13.2" | ||
const val espressoVersion = "3.3.0" | ||
const val androidTestVersion = "1.1.2" | ||
const val googlePlayUpdate = "2.1.0" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 얘도 ~ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 얘도~ |
||
|
||
val javaVersion = JavaVersion.VERSION_17 | ||
const val jvmVersion = "17" | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> | ||
|
||
</manifest> | ||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||
</manifest> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.going.presentation.splash | ||
|
||
import android.content.Context | ||
import android.net.ConnectivityManager | ||
import android.net.NetworkCapabilities | ||
|
||
object NetworkManager { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 음~ 최고 |
||
fun checkNetworkState(context: Context): Boolean { | ||
val connectivityManager: ConnectivityManager = | ||
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager | ||
|
||
val network = connectivityManager.activeNetwork ?: return false | ||
val actNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false | ||
return when { | ||
actNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true | ||
actNetwork.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true | ||
else -> false | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
package com.going.presentation.splash | ||
|
||
import android.app.AlertDialog | ||
import android.content.Intent | ||
import android.os.Bundle | ||
import android.os.Handler | ||
import android.os.Looper | ||
import androidx.activity.result.contract.ActivityResultContracts | ||
import com.going.presentation.BuildConfig | ||
import com.going.presentation.R | ||
import com.going.presentation.auth.SignInActivity | ||
import com.going.presentation.databinding.ActivitySplashBinding | ||
import com.going.ui.base.BaseActivity | ||
import com.going.ui.extension.toast | ||
import com.google.android.play.core.appupdate.AppUpdateInfo | ||
import com.google.android.play.core.appupdate.AppUpdateManagerFactory | ||
import com.google.android.play.core.appupdate.AppUpdateOptions | ||
import com.google.android.play.core.install.model.AppUpdateType.IMMEDIATE | ||
import com.google.android.play.core.install.model.UpdateAvailability | ||
import timber.log.Timber | ||
|
||
class SplashActivity : BaseActivity<ActivitySplashBinding>(R.layout.activity_splash) { | ||
private val appUpdateManager by lazy { AppUpdateManagerFactory.create(this) } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요 친구도 일단 지워주셔도 될듯합니당 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 지웠읍니다... |
||
|
||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
|
||
isConnectedNetwork() | ||
} | ||
|
||
private fun isConnectedNetwork() { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 변수 이름으로는 is가 적합하지만, 함수명으로는 check가 더 어울릴 것 같습니당 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 변경 완~ |
||
if (NetworkManager.checkNetworkState(this)) { | ||
initSplash() | ||
} else { | ||
showNetworkErrorAlertDialog() | ||
} | ||
} | ||
|
||
private fun showNetworkErrorAlertDialog() = | ||
AlertDialog.Builder(this) | ||
.setTitle(R.string.notice) | ||
.setMessage(R.string.internet_connect_error) | ||
.setCancelable(false) | ||
.setPositiveButton( | ||
R.string.okay, | ||
) { _, _ -> | ||
finishAffinity() | ||
Comment on lines
+44
to
+47
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 불필요한 아이들은 이렇게 처리할 수도 있군요! |
||
} | ||
.create() | ||
.show() | ||
|
||
private fun initSplash() { | ||
Handler(Looper.getMainLooper()).postDelayed({ | ||
navigateToSignInScreen() | ||
if (false) { // 자동 로그인 판정으로 변경 예정 | ||
navigateToMainScreen() | ||
} else { | ||
navigateToSignInScreen() | ||
} | ||
}, 3000) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 핸들러 사용 좋네용 |
||
} | ||
|
||
private fun navigateToMainScreen() { | ||
// Main이 나오면 구현 예정 | ||
finish() | ||
} | ||
|
||
private fun navigateToSignInScreen() { | ||
Intent(this, SignInActivity::class.java).apply { | ||
startActivity(this) | ||
} | ||
finish() | ||
Comment on lines
+57
to
+61
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 스코프 함수 좋습니다! |
||
} | ||
|
||
private fun requestUpdate(appUpdateInfo: AppUpdateInfo) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요 친구들도 뺴주셔야 할듯~ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 넹~ |
||
runCatching { | ||
appUpdateManager.startUpdateFlowForResult( | ||
appUpdateInfo, | ||
activityResultLauncher, | ||
AppUpdateOptions.newBuilder(IMMEDIATE) | ||
.setAllowAssetPackDeletion(true) | ||
.build(), | ||
) | ||
}.onFailure { | ||
Timber.e(it) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 팀버!!! |
||
} | ||
} | ||
|
||
private val activityResultLauncher = | ||
registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { | ||
if (it.resultCode != RESULT_OK) { | ||
toast(getString(R.string.splash_update_error)) | ||
finishAffinity() | ||
} | ||
} | ||
|
||
override fun onResume() { | ||
super.onResume() | ||
|
||
if (!BuildConfig.DEBUG) { | ||
appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo -> | ||
if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { | ||
runCatching { | ||
appUpdateManager.startUpdateFlowForResult( | ||
appUpdateInfo, | ||
activityResultLauncher, | ||
AppUpdateOptions.newBuilder(IMMEDIATE) | ||
.build(), | ||
) | ||
}.onFailure { errorMessage -> | ||
Timber.e(errorMessage) | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:width="194dp" | ||
android:height="66dp" | ||
android:viewportWidth="194" | ||
android:viewportHeight="66"> | ||
<path | ||
android:pathData="M159.66,17.95V12.4H152.52L152.52,33.65C152.52,33.66 152.52,33.66 152.52,33.66C152.52,33.67 152.52,33.67 152.52,33.68L152.52,66H159.66L159.66,49.38C163.3,52.56 168.06,54.48 173.26,54.48C184.71,54.48 194,45.16 194,33.66C194,22.17 184.71,12.85 173.26,12.85C168.06,12.85 163.3,14.77 159.66,17.95ZM186.81,33.66C186.81,41.18 180.75,47.27 173.26,47.27C165.78,47.27 159.71,41.18 159.71,33.66C159.71,26.15 165.78,20.06 173.26,20.06C180.75,20.06 186.81,26.15 186.81,33.66Z" | ||
android:fillColor="#ffffff" | ||
android:fillType="evenOdd"/> | ||
<path | ||
android:pathData="M34.34,48.55V53.6H41.48V33.01C41.48,33.01 41.48,33 41.48,33C41.48,33 41.48,32.99 41.48,32.99V0.44L34.34,0.44V17.45C30.7,14.31 25.94,12.4 20.74,12.4C9.28,12.4 0,21.62 0,33C0,44.38 9.28,53.6 20.74,53.6C25.94,53.6 30.7,51.69 34.34,48.55ZM7.19,33C7.19,25.57 13.25,19.54 20.74,19.54C28.22,19.54 34.29,25.57 34.29,33C34.29,40.43 28.22,46.46 20.74,46.46C13.25,46.46 7.19,40.43 7.19,33Z" | ||
android:fillColor="#ffffff" | ||
android:fillType="evenOdd"/> | ||
<path | ||
android:pathData="M145.1,13.27V53.15H138.09V13.27H145.1ZM141.56,9.39C138.98,9.39 136.91,7.31 136.91,4.7C136.91,2.01 138.98,0 141.56,0C144.14,0 146.28,2.01 146.28,4.7C146.28,7.31 144.14,9.39 141.56,9.39Z" | ||
android:fillColor="#ffffff"/> | ||
<path | ||
android:pathData="M131.56,12.85V20.14H129.61C124.72,20.73 122.59,24.45 122.64,27.89V53.15H115.51V27.89C115.51,27.89 115.5,23.68 116.48,21.24C117.45,18.84 119.15,16.92 119.15,16.92C121.83,14.05 126.69,12.77 131.56,12.85Z" | ||
android:fillColor="#ffffff"/> | ||
<path | ||
android:pathData="M78.53,49.47C75.12,52.06 70.85,53.6 66.23,53.6C55.02,53.6 45.93,44.57 45.93,33.44C45.93,22.31 55.02,13.29 66.23,13.29C70.85,13.29 75.12,14.83 78.53,17.42C81.98,14.83 86.3,13.29 90.98,13.29C102.31,13.29 111.49,22.31 111.49,33.44C111.49,44.57 102.31,53.6 90.98,53.6C86.3,53.6 81.98,52.06 78.53,49.47ZM61.72,24.48C62.43,24.8 62.64,25.85 62.19,26.82C61.74,27.79 60.8,28.32 60.09,27.99C59.38,27.67 59.17,26.62 59.62,25.65C60.07,24.68 61.01,24.15 61.72,24.48ZM56.31,26.47C56.76,25.5 56.55,24.45 55.84,24.13C55.13,23.8 54.19,24.33 53.74,25.3C53.29,26.27 53.5,27.32 54.21,27.64C54.92,27.97 55.86,27.44 56.31,26.47ZM55.89,32.15C55.88,31.99 56,31.85 56.16,31.84L63.99,31.22C64.15,31.21 64.29,31.32 64.3,31.48L64.31,31.56C64.49,33.86 62.76,35.88 60.44,36.07C58.12,36.25 56.09,34.53 55.9,32.22L55.89,32.15Z" | ||
android:fillColor="#ffffff" | ||
android:fillType="evenOdd"/> | ||
</vector> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<layout xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:app="http://schemas.android.com/apk/res-auto"> | ||
|
||
<data> | ||
|
||
</data> | ||
|
||
<androidx.constraintlayout.widget.ConstraintLayout | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent" | ||
android:background="@color/red_500"> | ||
|
||
<ImageView | ||
android:src="@drawable/text_logo_doorip" | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:layout_constraintEnd_toEndOf="parent" | ||
app:layout_constraintTop_toTopOf="parent" | ||
app:layout_constraintBottom_toBottomOf="parent" /> | ||
|
||
</androidx.constraintlayout.widget.ConstraintLayout> | ||
</layout> |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,11 @@ | |
|
||
<string name="counter">%1$d/%2$d</string> | ||
|
||
<string name="notice">안내</string> | ||
<string name="okay">확인</string> | ||
<string name="internet_connect_error">인터넷 연결을 확인해주세요</string> | ||
<string name="splash_update_error">업데이트에 문제가 생겼어요\n다시 시도해주세요</string> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요친구도 ~ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 나머지는 network 연결 에러시 dialog에도 사용되기 때문에 마지막만 지우도록 하겠습니다~ |
||
|
||
<!--onboarding--> | ||
<string name="onboarding_tb_title">프로필 생성</string> | ||
<string name="onboarding_name_tv_title">이름</string> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -58,4 +58,8 @@ | |
<item name="android:textAppearance">@style/TextAppearance.Doorip.Body3.Medi</item> | ||
</style> | ||
|
||
|
||
<style name="splash_delete" parent="Base.Theme.Doorip"> | ||
<item name="android:windowIsTranslucent">true</item> | ||
</style> | ||
Comment on lines
+62
to
+64
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요 친구는 아이템 하나인 것 같은데, 무슨 기능을 위해 사용되나요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 기존에 존재하는 splashScreen을 제거하는 기능을 합니다!! |
||
</resources> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요 친구들도 지금 자동 업데이트 기능 지금 안쓸거면 지금은 필요없을 듯 합니닷
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
허헣 삭제했습니다~