Skip to content

Commit

Permalink
#6 onboarding/온보딩 화면 : 디자인 포맷 설정 📰
Browse files Browse the repository at this point in the history
- 재사용 할 리사이클러뷰 정의
- 러프하게 화면 구현 (직장 정보 입력, 검색 및 등록 화면 / 로딩화면)
- 상태바 글자색 변경 (검정색으로)
  • Loading branch information
likppi10 committed Aug 1, 2022
1 parent 8176762 commit 5ee85b5
Show file tree
Hide file tree
Showing 23 changed files with 454 additions and 21 deletions.
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ dependencies {
implementation "com.tbuonomo:dotsindicator:$dotsindicator_version"
implementation "com.kakao.sdk:v2-user:$kakao_version"

implementation "com.github.bumptech.glide:glide:$glide_version"
annotationProcessor "com.github.bumptech.glide:compiler:$glide_compiler_version"

testImplementation "junit:junit:$junit_version"
androidTestImplementation "androidx.test.ext:junit:$android_junit_version"
androidTestImplementation "androidx.test.espresso:espresso-core:$android_espresso_core_version"
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.Hometerview"
tools:targetApi="31">

<activity
android:name=".ui.loading.LoadingActivity"
android:exported="false" />
<activity
android:name=".ui.onboardingnonresult.OnboardingNonResultActivity"
android:exported="false" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.ftw.hometerview.ui.loading

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.bumptech.glide.Glide
import com.ftw.hometerview.R
import com.ftw.hometerview.databinding.ActivityLoadingBinding

class LoadingActivity : AppCompatActivity() {

companion object {
fun newIntent(context: Context): Intent {
return Intent(context, LoadingActivity::class.java)
}
}

lateinit var binding: ActivityLoadingBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityLoadingBinding.inflate(layoutInflater)
setContentView(binding.root)

Glide.with(this).load(R.raw.loading).into(binding.loadView);
}

}
12 changes: 10 additions & 2 deletions app/src/main/java/com/ftw/hometerview/ui/login/LoginActivity.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ftw.hometerview.ui.login

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
Expand All @@ -9,7 +10,6 @@ import androidx.viewpager2.widget.ViewPager2
import com.ftw.hometerview.R
import com.ftw.hometerview.adapter.AnimationAdapter
import com.ftw.hometerview.databinding.ActivityLoginBinding
import com.ftw.hometerview.ui.main.MainActivity
import com.ftw.hometerview.ui.onboarding.OnboardingActivity
import com.kakao.sdk.auth.model.OAuthToken
import com.kakao.sdk.common.model.ClientError
Expand All @@ -20,6 +20,12 @@ const val TAG = "LoginActivity"

class LoginActivity : AppCompatActivity() {

companion object {
fun newIntent(context: Context): Intent {
return Intent(context, LoginActivity::class.java)
}
}

private lateinit var binding: ActivityLoginBinding

private val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
Expand Down Expand Up @@ -83,11 +89,13 @@ class LoginActivity : AppCompatActivity() {
UserApiClient.instance.loginWithKakaoAccount(this, callback = callback)
} else if (token != null) {
Log.i(TAG, "카카오톡으로 로그인 성공 token = ${token.accessToken}")
startActivity(Intent(this, OnboardingActivity::class.java))
startActivity(OnboardingActivity.newIntent(this))

}
}
} else {
UserApiClient.instance.loginWithKakaoAccount(this, callback = callback)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Parcelable
import android.util.Log
import com.ftw.domain.usecase.login.LoginUseCase
import com.ftw.domain.usecase.login.LoginUseCaseImpl
import com.ftw.hometerview.R
import kotlinx.parcelize.Parcelize

Expand All @@ -21,11 +18,10 @@ class MainActivity : AppCompatActivity() {
}
}



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

intent.getParcelableExtra<Argument>(ARGUMENT_KEY)?.let {

} ?: finish()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ftw.hometerview.ui.onboarding

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
Expand All @@ -9,6 +10,12 @@ import com.ftw.hometerview.ui.onboardingresult.OnboardingResultActivity

class OnboardingActivity : AppCompatActivity() {

companion object {
fun newIntent(context: Context): Intent {
return Intent(context, OnboardingActivity::class.java)
}
}

private lateinit var binding: ActivityOnboardingBinding

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -20,11 +27,14 @@ class OnboardingActivity : AppCompatActivity() {
binding.searchButton.setOnEditorActionListener { v, actionId, event ->
if(actionId == EditorInfo.IME_ACTION_SEARCH){
// 보내기 동작
val intent = Intent(this, OnboardingResultActivity::class.java)
intent.putExtra("search_word", binding.searchButton.text.toString())
startActivity(intent)
startActivity(
OnboardingResultActivity.newIntent(
this, binding.searchButton.text.toString()
)
)
}
true
}
}
}

}
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
package com.ftw.hometerview.ui.onboardingnonresult

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.ftw.hometerview.R
import com.ftw.hometerview.databinding.ActivityOnboardingNonResultBinding
import com.ftw.hometerview.ui.onboardingnonresult.searchaddress.SearchAddressFragment

class OnboardingNonResultActivity : AppCompatActivity() {

companion object {
fun newIntent(context: Context): Intent {
return Intent(context, OnboardingNonResultActivity::class.java)
}
}

private lateinit var binding: ActivityOnboardingNonResultBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityOnboardingNonResultBinding.inflate(layoutInflater)
setContentView(binding.root)

supportFragmentManager.beginTransaction().replace(R.id.enroll_fragment, SearchAddressFragment()).commit()
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.ftw.hometerview.ui.onboardingnonresult.enrolladdress

import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.ftw.hometerview.databinding.FragmentEnrollAddressBinding
import com.ftw.hometerview.ui.loading.LoadingActivity
import com.ftw.hometerview.ui.onboardingnonresult.OnboardingNonResultActivity

private const val ARG_PARAM1 = "result"

class EnrollAddressFragment : Fragment() {

private var result: String? = null
private lateinit var binding: FragmentEnrollAddressBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
result = it.getString(ARG_PARAM1)
}
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentEnrollAddressBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

binding.enrollCompanyButton.setOnClickListener {
startActivity(LoadingActivity.newIntent(requireContext()))
}

}

companion object {
@JvmStatic
fun newInstance(result: String) =
EnrollAddressFragment().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, result)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.ftw.hometerview.ui.onboardingnonresult.searchaddress

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import com.ftw.hometerview.R
import com.ftw.hometerview.databinding.FragmentSearchAddressBinding
import com.ftw.hometerview.ui.onboardingnonresult.enrolladdress.EnrollAddressFragment

class SearchAddressFragment : Fragment() {

private lateinit var binding: FragmentSearchAddressBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentSearchAddressBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

binding.searchButton.setOnEditorActionListener { v, actionId, event ->
if(actionId == EditorInfo.IME_ACTION_SEARCH){
// 보내기 동작
parentFragmentManager.beginTransaction()
.replace(R.id.enroll_fragment,
EnrollAddressFragment.newInstance( binding.searchButton.text.toString())
).commit()
}
true
}
}

}
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
package com.ftw.hometerview.ui.onboardingresult

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.os.Parcelable
import androidx.lifecycle.lifecycleScope
import com.ftw.hometerview.databinding.ActivityOnboardingResultBinding
import com.ftw.hometerview.ui.login.TAG
import com.ftw.hometerview.ui.onboardingnonresult.OnboardingNonResultActivity
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import kotlinx.parcelize.Parcelize
import javax.inject.Inject

@AndroidEntryPoint
class OnboardingResultActivity : AppCompatActivity() {

companion object {
val ARGUMENT_KEY = "ARGUMENT_KEY"
fun newIntent(context: Context, result: String): Intent {
return Intent(context, OnboardingResultActivity::class.java)
.putExtra(ARGUMENT_KEY, Argument(result))
}
}

@Inject
lateinit var viewModel: OnboardingResultViewModel
private lateinit var binding: ActivityOnboardingResultBinding
Expand All @@ -25,7 +34,7 @@ class OnboardingResultActivity : AppCompatActivity() {
binding = ActivityOnboardingResultBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.searchButton.setText(intent.getStringExtra("search_word"))
binding.searchButton.setText(intent.getParcelableExtra<Argument>(ARGUMENT_KEY)?.result)

binding.let {
it.lifecycleOwner = this
Expand All @@ -46,9 +55,13 @@ class OnboardingResultActivity : AppCompatActivity() {
}

private fun noResult() {
Log.d(TAG, "카카오계정공")
viewModel.noResultClicked()
val intent = Intent(this, OnboardingNonResultActivity::class.java)
startActivity(intent) // TODO: HometerviewActivity로 이동
startActivity(OnboardingNonResultActivity.newIntent(this))
}

@Parcelize
private data class Argument(
val result: String
) : Parcelable

}
20 changes: 20 additions & 0 deletions app/src/main/java/com/ftw/hometerview/ui/splash/SplashActivity.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
package com.ftw.hometerview.ui.splash

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.ftw.hometerview.R
import com.ftw.hometerview.ui.onboardingresult.OnboardingResultActivity
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlinx.coroutines.launch
import kotlinx.parcelize.Parcelize

@AndroidEntryPoint
class SplashActivity : AppCompatActivity() {

companion object {
val ARGUMENT_KEY = "ARGUMENT_KEY"
fun newIntent(context: Context, a: String, b: Int): Intent {
return Intent(context, SplashActivity::class.java)
.putExtra(ARGUMENT_KEY, Argument(a, b))
}
}

@Inject
lateinit var viewModel: SplashViewModel

Expand All @@ -33,4 +46,11 @@ class SplashActivity : AppCompatActivity() {
}
}
}

@Parcelize
private data class Argument(
val a: String,
val b: Int
) : Parcelable

}
Loading

0 comments on commit 5ee85b5

Please sign in to comment.