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

Seminar7 #6

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 11 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ dependencies {
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation "com.google.code.gson:gson:2.8.6"

implementation 'androidx.navigation:navigation-fragment-ktx:2.4.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.2'
Copy link
Member

Choose a reason for hiding this comment

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

네비게이션 추가하셨구나


implementation("androidx.fragment:fragment-ktx:1.4.1")
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
Expand Down
30 changes: 21 additions & 9 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,41 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.num1">

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- 인터넷 사용 권한-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 인터넷 사용 권한 -->
<uses-permission android:name="android.permission.INTERNET" />

<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Num1">
android:theme="@style/Theme.Num1"
android:usesCleartextTraffic="true">
<activity
android:name=".view.DetailActivity"
android:name=".OnBoarding"
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=".SettingActivity"
android:exported="false"/>
<activity
android:name=".view.activity.DetailActivity"
android:exported="false" />
<activity
android:name=".view.SignUpActivity"
android:name=".view.activity.SignUpActivity"
android:exported="false" />
<activity
android:name=".view.HomeActivity"
android:name=".view.activity.HomeActivity"
android:exported="false" />
<activity
android:name=".view.SignInActivity"
android:name=".view.activity.SignInActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
7 changes: 3 additions & 4 deletions app/src/main/java/com/example/num1/api/GithubService.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package com.example.num1.api

import com.example.num1.data.github.ResponseRepoInfo
import com.example.num1.data.github.ResponseUserInfo
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Path

interface GithubService {

@GET("users/{userId}")
fun repoForUser(
@GET("users/{userId}/followers")
fun getFollowers(
@Path("userId") userId:String
): Call<List<ResponseRepoInfo>>
): Call<List<ResponseUserInfo>>

@GET("users/{userId}")
fun getFollowingInfo(
Expand Down

This file was deleted.

35 changes: 3 additions & 32 deletions app/src/main/java/com/example/num1/data/github/ResponseUserInfo.kt
Original file line number Diff line number Diff line change
@@ -1,36 +1,7 @@
package com.example.num1.data.github

data class ResponseUserInfo(
val login: String,
val id: Int,
val node_id: String,
val avatar_url: String,
val gravatar_id: String,
val url: String,
val html_url: String,
val followers_url: String,
val following_url: String,
val gists_url: String,
val starred_url: String,
val subscriptions_url: String,
val organizations_url: String,
val repos_url: String,
val events_url: String,
val received_events_url: String,
val type: String,
val site_admin: Boolean,
val name: String,
val company: String?,
val blog: String?,
val location: String?,
val email: String?,
val hireable: String?,
val bio: String?,
val twitter_username: String?,
val public_repos: Int?,
val public_gists: Int?,
val followers: Int,
val following: Int,
val created_at: String,
val updated_at: String
val login : String,
val html_url : String,
val avatar_url : String
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ data class ResponseWrapper<T>(
// Response Data의 해당 중복 내용
val status: Int,
val message: String,
val data: T? = null
val data: T?
)
11 changes: 11 additions & 0 deletions app/src/main/java/com/example/num1/onboarding/OnBoarding.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.num1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class OnBoarding : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_on_boarding)
}
}
34 changes: 34 additions & 0 deletions app/src/main/java/com/example/num1/onboarding/OnBoarding1.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.num1.onboarding

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.fragment.findNavController
import com.example.num1.R
import com.example.num1.databinding.FragmentOnBoarding1Binding

class OnBoarding1 : Fragment() {

private var _binding : FragmentOnBoarding1Binding? = null
private val binding get() = _binding ?: error("Binding이 초기화 되지 않았습니다.")

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentOnBoarding1Binding.inflate(layoutInflater, container, false)
binding.btnNext.setOnClickListener {
findNavController().navigate(R.id.action_onBoarding1_to_onBoarding2)
}

return binding.root
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}

}
34 changes: 34 additions & 0 deletions app/src/main/java/com/example/num1/onboarding/OnBoarding2.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.num1.onboarding

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.example.num1.R
import com.example.num1.databinding.FragmentOnBoarding2Binding

class OnBoarding2 : Fragment() {

private var _binding: FragmentOnBoarding2Binding? = null
private val binding get() = _binding ?: error("Binding이 초기화 되지 않았습니다.")

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentOnBoarding2Binding.inflate(layoutInflater, container, false)
binding.btnNext.setOnClickListener {
findNavController().navigate(R.id.action_onBoarding2_to_onBoarding3)
}

return binding.root
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

35 changes: 35 additions & 0 deletions app/src/main/java/com/example/num1/onboarding/OnBoarding3.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.example.num1

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.example.num1.databinding.FragmentOnBoarding3Binding
import com.example.num1.view.activity.SignInActivity


class OnBoarding3 : Fragment() {
private var _binding: FragmentOnBoarding3Binding? = null
private val binding get() = _binding ?: error("Binding이 초기화 되지 않았습니다.")


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

private fun goSignIn(){
binding.btnNext.setOnClickListener {
val intent = Intent(context, SignInActivity::class.java)
startActivity(intent)
activity?.finish()

Choose a reason for hiding this comment

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

activity보다는 저는 requireActivity()를 즐겨 씁니다. 이전에 이런 글을 봤는데, requireActivity()가 더 명시적인 예외를 발생시킨다고 하네요.

https://stackoverflow.com/questions/61045573/what-is-the-difference-between-requireactivity-and-onactivitycreated

}
}

}
32 changes: 32 additions & 0 deletions app/src/main/java/com/example/num1/util/LOGINSharedPreferences.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.example.num1.util

import android.content.Context
import android.content.SharedPreferences

object LOGINSharedPreferences {
private const val STORAGE_KEY = "USER_AUTO"
private const val AUTO_LOGIN = "AUTO_LOGIN"

fun getSharedPreference(context: Context): SharedPreferences =
context.getSharedPreferences(STORAGE_KEY, Context.MODE_PRIVATE)
//sharedpreferences객체를 획득하 떄 지정하는 MODE_PRIVATE는 자기 앱 내에서 사용, 외부 앱에서 접근 불가

fun getAutoLogin(context: Context): Boolean {
return getSharedPreference(context).getBoolean(AUTO_LOGIN, false)
}

fun setAutoLogin(context: Context, value: Boolean) {
getSharedPreference(context).edit()
//데이터를 저장할때 사용하는 editor클래스의 함수
.putBoolean(AUTO_LOGIN, value)
.apply()
}

fun setLogin(context: Context) {
getSharedPreference(context)
.edit()
.remove(AUTO_LOGIN)
.clear()
.apply()
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.example.num1.view
package com.example.num1.view.activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.example.num1.R
import com.example.num1.databinding.ActivityDetailBinding

class DetailActivity : AppCompatActivity() {
private lateinit var binding : ActivityDetailBinding
private lateinit var binding: ActivityDetailBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -17,12 +18,13 @@ class DetailActivity : AppCompatActivity() {
getFollowerInfo()
}

private fun getFollowerInfo(){
with(binding){
private fun getFollowerInfo() {
with(binding) {
tvDetailName.text = intent.getStringExtra("name") //문자열이여서 get"string"
tvDetailIntroduce.text = intent.getStringExtra("introduce")
Glide.with(binding.root)
.load(intent.getStringExtra("profile"))
val image = intent.getStringExtra("image")
Glide.with(this@DetailActivity)
.load(image)
.circleCrop()
.into(binding.imgDetailProfile)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.num1.view
package com.example.num1.view.activity

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
Expand Down
Loading