Skip to content

Commit

Permalink
Merge pull request #25 from ttoklip/feat/#15_첫화면로그인_구현
Browse files Browse the repository at this point in the history
Feat/#15 첫화면로그인 구현
  • Loading branch information
hangunhee39 authored Jan 30, 2024
2 parents 7edf033 + a4d5ce6 commit 576be40
Show file tree
Hide file tree
Showing 21 changed files with 1,303 additions and 870 deletions.
22 changes: 20 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,33 @@
android:name=".presentation.mypage.MyHoneyTipActivity"
android:screenOrientation="portrait"
android:exported="false" />
<activity android:name=".presentation.intro.IntroActivity"
android:exported="false"/>
<activity android:name=".presentation.login.LoginActivity"
android:exported="false"/>
<activity android:name=".presentation.signup.SignupActivity"
android:exported="false"/>

<activity
android:name=".presentation.MainActivity"
android:name=".presentation.intro.SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".presentation.MainActivity"
android:exported="false"/>
<!-- <activity-->
<!-- android:name=".presentation.MainActivity"-->
<!-- android:exported="true">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->

<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<!-- </activity>-->

<service
android:name="com.google.android.gms.metadata.ModuleDependencies"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,45 @@
package com.umc.ttoklip.presentation.intro

import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.viewpager2.widget.ViewPager2
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.ActivitySplashBinding
import com.umc.ttoklip.databinding.ActivityIntroBinding
import com.umc.ttoklip.presentation.base.BaseActivity
import com.umc.ttoklip.presentation.login.LoginActivity

class IntroActivity:BaseActivity<ActivitySplashBinding>(R.layout.activity_intro){
class IntroActivity:BaseActivity<ActivityIntroBinding>(R.layout.activity_intro){
override fun initView() {
val handler= Handler(Looper.getMainLooper())
handler.postDelayed({
//activity 이름 알아오기
//startActivity(Intent(this,MainActivity::class.java))
},2000)
binding.introIntroVp.apply {
adapter=IntroVPAdapter(this@IntroActivity,3)
registerOnPageChangeCallback(object:ViewPager2.OnPageChangeCallback(){
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
when(position){
2->binding.introNextBtn.text="똑립 시작하기"
else->binding.introNextBtn.text="다음"
}
}
})
}
binding.introIndicator.attachTo(binding.introIntroVp)

binding.introNextBtn.setOnClickListener {
if(binding.introIntroVp.currentItem==2) {
val spf=getSharedPreferences("first", MODE_PRIVATE)
val editor=spf.edit()
editor.putBoolean("firstRun",false)
editor.apply()
startActivity(Intent(this, LoginActivity::class.java))
}else{
binding.introIntroVp.currentItem++
}
}
}
override fun initObserver() {

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

override fun initObserver() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.umc.ttoklip.presentation.intro

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.umc.ttoklip.databinding.FragmentIntroBinding

class IntroFragment(val position:Int): Fragment() {
private lateinit var binding: FragmentIntroBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding=FragmentIntroBinding.inflate(inflater,container,false)

when (position){
0->{binding.itemIntroTitleTv.text="우리, 꿀팁 공유해요!"
binding.itemIntroDescTv.text="독립생활을 하는데 어려운 점을 공유하고\n도움을 주며 해결해봐요"
/**인앱화면 연결 필요**/}
1->{binding.itemIntroTitleTv.text="오늘은 또 어떤 정보가?"
binding.itemIntroDescTv.text="독립생활을 하는데 필요한 유용한\n정보들을 받아봐요"}
else->{binding.itemIntroTitleTv.text="우리 동네 안에서 서로서로"
binding.itemIntroDescTv.text="우리 동네 똑립이들과 친해지고, 공구하고,\n음식 배달비도 아껴봐요"}
}

return binding.root
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.umc.ttoklip.presentation.intro

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter

class IntroVPAdapter(fa: FragmentActivity,private val count:Int) : FragmentStateAdapter(fa) {
override fun getItemCount(): Int = count
override fun createFragment(position: Int): Fragment=IntroFragment(position)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
package com.umc.ttoklip.presentation.intro

import android.content.Intent
import android.os.Handler
import android.os.Looper
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.ActivitySplashBinding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseActivity
import com.umc.ttoklip.presentation.login.LoginActivity

class SplashActivity:BaseActivity<ActivitySplashBinding>(R.layout.activity_splash) {
override fun initView() {
val handler= Handler(Looper.getMainLooper())
handler.postDelayed({
val spf=getSharedPreferences("first", MODE_PRIVATE)
val firstRun=spf.getBoolean("firstRun",true)
if(firstRun){
startActivity(Intent(this, IntroActivity::class.java))
}else{
startActivity(Intent(this, LoginActivity::class.java))
}
},2000)
}

override fun initObserver() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.umc.ttoklip.presentation.login

import android.content.Intent
import android.content.SharedPreferences
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.ActivityLoginBinding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseActivity
import com.umc.ttoklip.presentation.signup.SignupActivity

class LoginActivity:BaseActivity<ActivityLoginBinding>(R.layout.activity_login) {

private var isSaveId:Boolean=false

override fun initView() {
val spf=getSharedPreferences("id", MODE_PRIVATE)
loadSaveId(spf)
binding.loginLoginBtn.setOnClickListener {
setSaveId(isSaveId,spf)
startActivity(Intent(this, MainActivity::class.java))
}
binding.loginSignupBtn.setOnClickListener {
startActivity(Intent(this, SignupActivity::class.java))
}
binding.loginSaveIdIv.setOnClickListener {
setSaveIdStatus(!isSaveId)
}
}

private fun loadSaveId(spf: SharedPreferences) {
isSaveId=spf.getBoolean("saveIdCheck",false)
setSaveIdStatus(isSaveId)
binding.loginIdEt.setText(spf.getString("idString",""))
}
private fun setSaveId(isSaveId: Boolean, spf: SharedPreferences){
val editor=spf.edit()
if (isSaveId){//나중에 로그인 ok도 조건으로 달기
editor.putBoolean("saveIdCheck",true)
editor.putString("idString",binding.loginIdEt.text.toString().trim())
editor.apply()
}else{
editor.putBoolean("saveIdCheck",false)
editor.remove("idString")
editor.apply()
}
}

private fun setSaveIdStatus(isSaveId: Boolean) {
if(isSaveId){
this.isSaveId=true
binding.loginSaveIdIv.setImageResource(R.drawable.ic_check_on_20)
}else{
this.isSaveId=false
binding.loginSaveIdIv.setImageResource(R.drawable.ic_check_off_20)
}
}

override fun onBackPressed() {
//super.onBackPressed()
}

override fun initObserver() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.umc.ttoklip.presentation.signup

import androidx.fragment.app.Fragment
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.ActivitySignupBinding
import com.umc.ttoklip.presentation.base.BaseActivity

class SignupActivity:BaseActivity<ActivitySignupBinding>(R.layout.activity_signup) {
override fun initView() {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.signup_frm)as NavHostFragment
var navController=navHostFragment.findNavController()
binding.loginBackIb.setOnClickListener {
navController.popBackStack()
}
}

override fun initObserver() {
}

fun setTitle(title:String,step:Int){
binding.loginTitleTv.text=title
binding.signupProgressbar.progress=step
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.umc.ttoklip.presentation.signup.fragments

import android.content.Context
import androidx.activity.OnBackPressedCallback
import androidx.navigation.fragment.findNavController
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.FragmentSignup1Binding
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.signup.SignupActivity

class Signup1Fragment: BaseFragment<FragmentSignup1Binding>(R.layout.fragment_signup1) {

override fun initObserver() {
}

override fun initView() {
val activity=activity as SignupActivity
activity?.setTitle("1단계 - 개인정보 입력",1)
binding.signup1NextBtn.setOnClickListener {
findNavController().navigate(R.id.action_signup1_fragment_to_signup2_fragment)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.umc.ttoklip.presentation.signup.fragments

import android.content.Context
import androidx.activity.OnBackPressedCallback
import androidx.navigation.fragment.findNavController
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.FragmentSignup1Binding
import com.umc.ttoklip.databinding.FragmentSignup2Binding
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.signup.SignupActivity

class Signup2Fragment: BaseFragment<FragmentSignup2Binding>(R.layout.fragment_signup2) {

private lateinit var callback:OnBackPressedCallback

override fun initObserver() {
}

override fun initView() {
val activity=activity as SignupActivity
activity?.setTitle("2단계 - 계정 설정",2)
binding.signup2NextBtn.setOnClickListener {
findNavController().navigate(R.id.action_signup2_fragment_to_signup3_fragment)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.umc.ttoklip.presentation.signup.fragments

import androidx.navigation.fragment.findNavController
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.FragmentSignup3Binding
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.signup.SignupActivity

class Signup3Fragment: BaseFragment<FragmentSignup3Binding>(R.layout.fragment_signup3) {
override fun initObserver() {
}

override fun initView() {
val activity=activity as SignupActivity
activity?.setTitle("3단계 - 약관 동의",3)
binding.signup3NextBtn.setOnClickListener {
findNavController().navigate(R.id.action_signup3_fragment_to_signup4_fragment)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.umc.ttoklip.presentation.signup.fragments

import android.content.Intent
import androidx.navigation.fragment.findNavController
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.FragmentSignup4Binding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.signup.SignupActivity

class Signup4Fragment: BaseFragment<FragmentSignup4Binding>(R.layout.fragment_signup4) {
override fun initObserver() {
}

override fun initView() {
val activity=activity as SignupActivity
activity?.setTitle("4단계 - 프로필 설정",4)
binding.signup4NextBtn.setOnClickListener {
startActivity(Intent(activity, MainActivity::class.java))
}
}
}
7 changes: 0 additions & 7 deletions app/src/main/res/layout/activity_intro.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,6 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<data>

<variable
name="splash"
type="com.umc.ttoklip.presentation.intro.IntroActivity" />
</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
Expand Down
Loading

0 comments on commit 576be40

Please sign in to comment.