Skip to content
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

Merged
merged 9 commits into from
Jan 8, 2024
18 changes: 12 additions & 6 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
android:name=".MyApp"
Expand All @@ -11,7 +12,7 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_doorip_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Doorip"
android:theme="@style/splash_delete"
android:usesCleartextTraffic="true"
tools:targetApi="31">

Expand All @@ -32,6 +33,11 @@

<activity
android:name="com.going.presentation.mock.MockActivity"
android:exported="false"
android:screenOrientation="portrait" />

<activity
android:name="com.going.presentation.splash.SplashActivity"
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
Expand All @@ -42,7 +48,7 @@
</activity>

<activity
android:name="com.going.presentation.auth.LoginActivity"
android:name="com.going.presentation.auth.SignInActivity"
android:exported="false"
android:screenOrientation="portrait" />

Expand All @@ -54,17 +60,17 @@
<activity
android:name="com.going.presentation.onboarding.OnboardingProfileSettingActivity"
android:exported="false"
android:screenOrientation="portrait"/>
android:screenOrientation="portrait" />

<activity
android:name="com.going.presentation.tendencytest.TendencyTestSplashActivity"
android:exported="false"
android:screenOrientation="portrait"/>
android:screenOrientation="portrait" />

<activity
android:name="com.going.presentation.tendencytest.TendencyTestActivity"
android:exported="false"
android:screenOrientation="portrait"/>
android:screenOrientation="portrait" />

<activity
android:name="com.going.presentation.preferencetag.PreferenceTagActivity"
Expand All @@ -74,7 +80,7 @@
<activity
android:name="com.going.presentation.tendencytest.result.TendencyTestResultActivity"
android:exported="true"
android:screenOrientation="portrait"/>
android:screenOrientation="portrait" />

</application>

Expand Down
3 changes: 2 additions & 1 deletion presentation/src/main/AndroidManifest.xml
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
Expand Up @@ -14,8 +14,8 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class LoginActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_login) {
private val viewModel by viewModels<LoginViewModel>()
class SignInActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_login) {
private val viewModel by viewModels<SignInViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import timber.log.Timber
import javax.inject.Inject

@HiltViewModel
class LoginViewModel @Inject constructor(
class SignInViewModel @Inject constructor(
private val loginRepository: LoginRepository,
) : ViewModel() {
private val _postChangeTokenState = MutableStateFlow<UiState<AuthTokenModel>>(UiState.Empty)
Expand Down
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 {
Copy link
Member

Choose a reason for hiding this comment

The 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,63 @@
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 com.going.presentation.R
import com.going.presentation.auth.SignInActivity
import com.going.presentation.databinding.ActivitySplashBinding
import com.going.ui.base.BaseActivity

class SplashActivity : BaseActivity<ActivitySplashBinding>(R.layout.activity_splash) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

checkConnectedNetwork()
}

private fun checkConnectedNetwork() {
if (NetworkManager.checkNetworkState(this)) {
initSplash()
} else {
showNetworkErrorAlertDialog()
}
}

private fun initSplash() {
Handler(Looper.getMainLooper()).postDelayed({
navigateToSignInScreen()
if (false) { // 자동 로그인 판정으로 변경 예정
navigateToMainScreen()
} else {
navigateToSignInScreen()
}
}, 3000)
}

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

불필요한 아이들은 이렇게 처리할 수도 있군요!

}
.create()
.show()

private fun navigateToMainScreen() {
// Main이 나오면 구현 예정
finish()
}

private fun navigateToSignInScreen() {
Intent(this, SignInActivity::class.java).apply {
startActivity(this)
}
finish()
Comment on lines +57 to +61
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스코프 함수 좋습니다!

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class TendencyTestResultActivity :
with(binding) {
tvTendencyTestResultTitle.text = getString(R.string.tendency_test_result_title, "찐두릅")

viewModel.mockTendencyResult.apply {
viewModel?.mockTendencyResult?.apply {
tvTendencyTestResultType.text = tendencyTitle
tvTendencyTestResultSubType.text = tendencySubTitle

Expand Down
24 changes: 24 additions & 0 deletions presentation/src/main/res/drawable/text_logo_doorip.xml
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>
24 changes: 24 additions & 0 deletions presentation/src/main/res/layout/activity_splash.xml
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>
6 changes: 5 additions & 1 deletion presentation/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
<string name="sign_in_tv_title">여행을 시작해보세요</string>
<string name="sign_in_tv_terms"><u>개인정보처리방침</u></string>

<string name="counter">%1$d/%2$d</string>
<string name="counter">%1$d/%2$d</string>제

<string name="notice">안내</string>
<string name="okay">확인</string>
<string name="internet_connect_error">인터넷 연결을 확인해주세요</string>

<!--onboarding-->
<string name="onboarding_tb_title">프로필 생성</string>
Expand Down
4 changes: 4 additions & 0 deletions presentation/src/main/res/values/themes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요 친구는 아이템 하나인 것 같은데, 무슨 기능을 위해 사용되나요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존에 존재하는 splashScreen을 제거하는 기능을 합니다!!
이게 없으면 splash가 두개가 떠용

</resources>