diff --git a/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeActivity.kt b/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeActivity.kt
deleted file mode 100644
index 8edffeb..0000000
--- a/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeActivity.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.sopt.androidassignment
-
-import android.content.ActivityNotFoundException
-import android.content.Intent
-import android.content.Intent.createChooser
-import android.net.Uri
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.widget.Toast
-import org.sopt.androidassignment.databinding.ActivityHomeBinding
-
-
-class HomeActivity : AppCompatActivity() {
-
- private lateinit var binding : ActivityHomeBinding
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- binding = ActivityHomeBinding.inflate(layoutInflater)
- val address : Intent = Uri.parse("https://github.com/briandr97").let{webpage->Intent(Intent.ACTION_VIEW, webpage)}
-
- //val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/briandr97"))
-
-
- binding.btHomeGit.setOnClickListener{
- //val intent = Intent(Intent.ACTION_SEND)
- //val title = resources.getString(R.string.chooser_title)
- //val chooser = createChooser(intent, title)
- try{
- startActivity(address)
- }catch(e:ActivityNotFoundException){
- Toast.makeText(this, "실행할 수 있는 앱이 없습니다.", Toast.LENGTH_SHORT).show()
- }
- }
-
- setContentView(binding.root)
- }
-}
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignInActivity.kt b/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignInActivity.kt
deleted file mode 100644
index f62663f..0000000
--- a/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignInActivity.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.sopt.androidassignment
-
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.widget.Toast
-import org.sopt.androidassignment.databinding.ActivitySignInBinding
-
-class SignInActivity : AppCompatActivity() {
-
- private lateinit var binding : ActivitySignInBinding
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- binding = ActivitySignInBinding.inflate(layoutInflater)
-
- val intent = Intent(this, HomeActivity::class.java)
- binding.btLogin.setOnClickListener{
- var str = binding.etId.getText()
- var pw = binding.etPw.getText()
- if(!str.isEmpty() && !pw.isEmpty()){
- Toast.makeText(this, "${str}님 환영합니다.", Toast.LENGTH_SHORT).show()
- startActivity(intent)
- }
- else{
- Toast.makeText(this, "로그인 실패", Toast.LENGTH_SHORT).show()
- }
- }
-
- val intent2 = Intent(this, SignUpActivity::class.java)
- binding.btSignin.setOnClickListener{
- startActivity(intent2)
- }
-
- val id = getIntent().getStringExtra("id")
- val pw = getIntent().getStringExtra("pw")
-
- binding.etId.setText(id)
- binding.etPw.setText(pw)
-
-
-
- setContentView(binding.root)
- }
-}
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/drawable/button_round.xml b/AndroidAssignment/app/src/main/res/drawable/button_round.xml
deleted file mode 100644
index db46f6b..0000000
--- a/AndroidAssignment/app/src/main/res/drawable/button_round.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
- //10만큼 각모서리에
-
-
-
- //내부 색 설정
- //각 모서리를 12dp만큼 둥글게 만들겠다ㅣ.
-
-
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/layout/activity_home.xml b/AndroidAssignment/app/src/main/res/layout/activity_home.xml
deleted file mode 100644
index 60b6327..0000000
--- a/AndroidAssignment/app/src/main/res/layout/activity_home.xml
+++ /dev/null
@@ -1,225 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /
-
-
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/values/strings.xml b/AndroidAssignment/app/src/main/res/values/strings.xml
deleted file mode 100644
index 48936d3..0000000
--- a/AndroidAssignment/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- AndroidAssignment
-
\ No newline at end of file
diff --git a/AndroidAssignment/.gitignore b/again/.gitignore
similarity index 100%
rename from AndroidAssignment/.gitignore
rename to again/.gitignore
diff --git a/AndroidAssignment/.idea/.gitignore b/again/.idea/.gitignore
similarity index 100%
rename from AndroidAssignment/.idea/.gitignore
rename to again/.idea/.gitignore
diff --git a/again/.idea/.name b/again/.idea/.name
new file mode 100644
index 0000000..a31b82f
--- /dev/null
+++ b/again/.idea/.name
@@ -0,0 +1 @@
+AgainAssignment
\ No newline at end of file
diff --git a/AndroidAssignment/.idea/compiler.xml b/again/.idea/compiler.xml
similarity index 100%
rename from AndroidAssignment/.idea/compiler.xml
rename to again/.idea/compiler.xml
diff --git a/AndroidAssignment/.idea/gradle.xml b/again/.idea/gradle.xml
similarity index 100%
rename from AndroidAssignment/.idea/gradle.xml
rename to again/.idea/gradle.xml
diff --git a/AndroidAssignment/.idea/misc.xml b/again/.idea/misc.xml
similarity index 53%
rename from AndroidAssignment/.idea/misc.xml
rename to again/.idea/misc.xml
index 831c5f5..3f1e257 100644
--- a/AndroidAssignment/.idea/misc.xml
+++ b/again/.idea/misc.xml
@@ -3,21 +3,21 @@
diff --git a/again/.idea/vcs.xml b/again/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/again/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/README.md b/again/README.md
new file mode 100644
index 0000000..8e25dfd
--- /dev/null
+++ b/again/README.md
@@ -0,0 +1,102 @@
+### 4주차 필수과제 리드미
+먼저 3주차 과제를 오류로 실패하여 모든 것을 처음부터 새로 만들었습니다.
+그래서 맨 처음 화면인 로그인 화면과 회원가입 화면만 제대로 구성했고 로그인하면 나오는 화면은 제대로 제대로 구현하지 않았습니다.
+### 회원가입 화면
+
+### 로그인 성공 화면
+
+### 로그인 실패 화면
+
+
+먼저 로그인 부분은 세미나에서 했던 그대로 했습니다.(액티비티 이름만 바꿔주었습니다.)
+그리고 로그인 부분을 응용해서 회원가입 부분을 만들었습니다.
+회원가입에 사용될 RequestData파일과 ResponseData파일을 새로 만들고
+_RequestData파일_
+```
+data class RequestSignupData(
+ @SerializedName("email")
+ val id: String,
+ val name: String,
+ val password: String
+)
+```
+_ResponseData파일_
+```
+data class ResponseSignupData(
+ val status: Int,
+ val success: Boolean,
+ val message: String,
+ val data: Data2
+)
+
+data class Data2(
+ val id: Int,
+ val name: String,
+ val email: String
+)
+```
+근데 Response파일은 로그인 할 때나 회원가입할 때나 같은데 그냥 하나로 쓰면 안되나..?라는 궁금증이 갑자기 리드미 쓰면서 생기네요
+
+그리고 회원가입에 대한 interface를 만들었습니다.
+```
+interface SignUp {
+ @Headers("Content-Type:application/json")
+ @POST("user/signup")
+ fun postSignup(
+ @Body body : RequestSignupData
+ ) : Call
+}
+```
+
+그리고 생성자에 val signup을 선언합니다.
+
+```
+object ServiceCreator {
+ private const val BASE_URL = "https://asia-northeast3-we-sopt-29.cloudfunctions.net/api/"
+
+ private val retrofit : Retrofit = Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+
+ val sampleService: SampleService = retrofit.create(SampleService::class.java)
+ val signup : SignUp = retrofit.create(SignUp::class.java)
+}
+```
+
+회원가입 액티비티에서 사용할 initNetWork 함수를 만들었습니다.
+사실 로그인에서 사용했던 것에서 name만 추가하고 이름만 바꿔주면 됩니다,,
+
+```
+private fun initNetwork(){
+ val requestSignupData = RequestSignupData(
+ id = binding.etSignupId.text.toString(),
+ name = binding.etSignupName.text.toString(),
+ password = binding.etSignupPw.text.toString()
+ )
+
+ val call: Call = ServiceCreator.signup.postSignup(requestSignupData)
+
+ call.enqueue(object: Callback {
+ override fun onResponse(
+ call: Call,
+ response: Response
+ ) {
+ if(response.isSuccessful){
+ val data = response.body()?.data
+
+ Toast.makeText(this@SignUpActivity, "${data?.email}님 회원가입 되었습니다!", Toast.LENGTH_SHORT).show()
+ finish()
+ } else
+ Toast.makeText(this@SignUpActivity, "회원가입에 실패하셨습니다", Toast.LENGTH_SHORT).show()
+ }
+
+ override fun onFailure(call: Call, t: Throwable) {
+ Log.e("NetWorkTest", "error:$t")
+ }
+ })
+ }
+```
+
++추가로 postman 이미지입니당,,
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/.gitignore b/again/app/.gitignore
similarity index 100%
rename from AndroidAssignment/app/.gitignore
rename to again/app/.gitignore
diff --git a/again/app/build.gradle b/again/app/build.gradle
new file mode 100644
index 0000000..e877752
--- /dev/null
+++ b/again/app/build.gradle
@@ -0,0 +1,57 @@
+plugins {
+ id 'com.android.application'
+ id 'kotlin-android'
+}
+
+android {
+ compileSdk 31
+
+ defaultConfig {
+ applicationId "org.sopt.study.againassignment"
+ minSdk 26
+ targetSdk 31
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildFeatures{
+ viewBinding true
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+}
+
+dependencies {
+
+ // 서버 연결을 위한 Retrofit2
+ implementation "com.squareup.retrofit2:retrofit:2.9.0"
+ // Retrofit2에서 gson 사용을 위한 컨버터
+ implementation "com.squareup.retrofit2:converter-gson:2.9.0"
+ // gson
+ implementation "com.google.code.gson:gson:2.8.6"
+
+ implementation 'androidx.core:core-ktx:1.7.0'
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+}
\ No newline at end of file
diff --git a/AndroidAssignment/app/proguard-rules.pro b/again/app/proguard-rules.pro
similarity index 100%
rename from AndroidAssignment/app/proguard-rules.pro
rename to again/app/proguard-rules.pro
diff --git a/again/app/src/androidTest/java/org/sopt/study/againassignment/ExampleInstrumentedTest.kt b/again/app/src/androidTest/java/org/sopt/study/againassignment/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..26140b7
--- /dev/null
+++ b/again/app/src/androidTest/java/org/sopt/study/againassignment/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package org.sopt.study.againassignment
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("org.sopt.study.againassignment", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/AndroidManifest.xml b/again/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..ab79d72
--- /dev/null
+++ b/again/app/src/main/AndroidManifest.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/First2Fragment.kt b/again/app/src/main/java/org/sopt/study/againassignment/First2Fragment.kt
new file mode 100644
index 0000000..f3f3bb3
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/First2Fragment.kt
@@ -0,0 +1,44 @@
+package org.sopt.study.againassignment
+
+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 org.sopt.study.againassignment.databinding.FragmentFirst2Binding
+
+/**
+ * A simple [Fragment] subclass as the default destination in the navigation.
+ */
+class First2Fragment : Fragment() {
+
+ private var _binding: FragmentFirst2Binding? = null
+
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+
+ _binding = FragmentFirst2Binding.inflate(inflater, container, false)
+ return binding.root
+
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.buttonFirst.setOnClickListener {
+ findNavController().navigate(R.id.action_First2Fragment_to_Second2Fragment)
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/FirstFragment.kt b/again/app/src/main/java/org/sopt/study/againassignment/FirstFragment.kt
new file mode 100644
index 0000000..0e0a1bd
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/FirstFragment.kt
@@ -0,0 +1,44 @@
+package org.sopt.study.againassignment
+
+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 org.sopt.study.againassignment.databinding.FragmentFirstBinding
+
+/**
+ * A simple [Fragment] subclass as the default destination in the navigation.
+ */
+class FirstFragment : Fragment() {
+
+ private var _binding: FragmentFirstBinding? = null
+
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+
+ _binding = FragmentFirstBinding.inflate(inflater, container, false)
+ return binding.root
+
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.buttonFirst.setOnClickListener {
+ findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment)
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/FollowerAdapter.kt b/again/app/src/main/java/org/sopt/study/againassignment/FollowerAdapter.kt
new file mode 100644
index 0000000..6408424
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/FollowerAdapter.kt
@@ -0,0 +1,36 @@
+package org.sopt.study.againassignment
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.sopt.study.againassignment.databinding.ItemSampleListBinding
+
+class FollowerAdapter : RecyclerView.Adapter() {
+ val userList = mutableListOf()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): FollowerAdapter.FollowerViewHolder {
+ val binding = ItemSampleListBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent, false
+ )
+
+ return FollowerViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: FollowerAdapter.FollowerViewHolder, position: Int) {
+ holder.onBind(userList[position])
+ }
+
+ override fun getItemCount(): Int = userList.size
+
+ class FollowerViewHolder(private val binding: ItemSampleListBinding)
+ :RecyclerView.ViewHolder(binding.root){
+ fun onBind(data : UserData){
+ binding.tvName.text = data.name
+ binding.tvIntroduce.text=data.introduction
+ }
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/HomeActivity.kt b/again/app/src/main/java/org/sopt/study/againassignment/HomeActivity.kt
new file mode 100644
index 0000000..44c706f
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/HomeActivity.kt
@@ -0,0 +1,46 @@
+package org.sopt.study.againassignment
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import org.sopt.study.againassignment.databinding.ActivityHomeBinding
+
+class HomeActivity : AppCompatActivity() {
+ private var position = FIRST_POSITION
+ private lateinit var binding: ActivityHomeBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ binding = ActivityHomeBinding.inflate(layoutInflater)
+ initTransactionEvent()
+ setContentView(binding.root)
+ }
+
+ private fun initTransactionEvent(){
+ val fragment1 = SampleFragment1()
+ val fragment2 = SampleFragment2()
+
+ supportFragmentManager.beginTransaction().add(R.id.container_main, fragment1).commit()
+
+ binding.btChange.setOnClickListener{
+ val transaction = supportFragmentManager.beginTransaction()
+
+ when(position){
+ FIRST_POSITION->{
+ transaction.replace(R.id.container_main, fragment2)
+ position = SECOND_POSITION
+ }
+ SECOND_POSITION->{
+ transaction.replace(R.id.container_main, fragment1)
+ position= FIRST_POSITION
+ }
+ }
+ transaction.commit()
+ }
+ }
+
+ companion object{
+ const val FIRST_POSITION=1
+ const val SECOND_POSITION=2
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/MainActivity.kt b/again/app/src/main/java/org/sopt/study/againassignment/MainActivity.kt
new file mode 100644
index 0000000..1716e94
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/MainActivity.kt
@@ -0,0 +1,61 @@
+package org.sopt.study.againassignment
+
+import android.app.DownloadManager
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import org.sopt.study.againassignment.databinding.ActivityMainBinding
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+
+class MainActivity : AppCompatActivity() {
+ lateinit var binding : ActivityMainBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityMainBinding.inflate(layoutInflater)
+
+ val intent = Intent(this, SignUpActivity::class.java)
+
+ binding.tvLoginSignUp.setOnClickListener{
+ startActivity(intent)
+ }
+
+ binding.btLogin.setOnClickListener{
+ initNetwork()
+ }
+
+ setContentView(binding.root)
+ }
+
+ private fun initNetwork(){
+ val requestLoginData = RequestLoginData(
+ id = binding.etLoginId.text.toString(),
+ password = binding.etLoginPw.text.toString()
+ )
+
+ val call: Call = ServiceCreator.sampleService.postLogin(requestLoginData)
+
+ call.enqueue(object:Callback {
+ override fun onResponse(
+ call: Call,
+ response: Response
+ ) {
+ if(response.isSuccessful){
+ val data = response.body()?.data
+
+ Toast.makeText(this@MainActivity, "${data?.email}님 반갑습니다!", Toast.LENGTH_SHORT).show()
+ startActivity(Intent(this@MainActivity, HomeActivity::class.java))
+ } else
+ Toast.makeText(this@MainActivity, "로그인에 실패하셨습니다", Toast.LENGTH_SHORT).show()
+ }
+
+ override fun onFailure(call: Call, t: Throwable) {
+ Log.e("NetWorkTest", "error:$t")
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/RequestLoginData.kt b/again/app/src/main/java/org/sopt/study/againassignment/RequestLoginData.kt
new file mode 100644
index 0000000..73b2928
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/RequestLoginData.kt
@@ -0,0 +1,9 @@
+package org.sopt.study.againassignment
+
+import com.google.gson.annotations.SerializedName
+
+data class RequestLoginData(
+ @SerializedName("email")
+ val id: String,
+ val password: String
+)
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/RequestSignupData.kt b/again/app/src/main/java/org/sopt/study/againassignment/RequestSignupData.kt
new file mode 100644
index 0000000..98088ed
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/RequestSignupData.kt
@@ -0,0 +1,10 @@
+package org.sopt.study.againassignment
+
+import com.google.gson.annotations.SerializedName
+
+data class RequestSignupData(
+ @SerializedName("email")
+ val id: String,
+ val name: String,
+ val password: String
+)
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/ResponseLoginData.kt b/again/app/src/main/java/org/sopt/study/againassignment/ResponseLoginData.kt
new file mode 100644
index 0000000..5cf1e5c
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/ResponseLoginData.kt
@@ -0,0 +1,14 @@
+package org.sopt.study.againassignment
+
+data class ResponseLoginData(
+ val status: Int,
+ val success: Boolean,
+ val message: String,
+ val data: Data
+)
+
+data class Data(
+ val id: Int,
+ val name: String,
+ val email: String
+)
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/ResponseSignupData.kt b/again/app/src/main/java/org/sopt/study/againassignment/ResponseSignupData.kt
new file mode 100644
index 0000000..35f398c
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/ResponseSignupData.kt
@@ -0,0 +1,14 @@
+package org.sopt.study.againassignment
+
+data class ResponseSignupData(
+ val status: Int,
+ val success: Boolean,
+ val message: String,
+ val data: Data2
+)
+
+data class Data2(
+ val id: Int,
+ val name: String,
+ val email: String
+)
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/SampleFragment1.kt b/again/app/src/main/java/org/sopt/study/againassignment/SampleFragment1.kt
new file mode 100644
index 0000000..c197000
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/SampleFragment1.kt
@@ -0,0 +1,27 @@
+package org.sopt.study.againassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import org.sopt.study.againassignment.databinding.FragmentSample1Binding
+
+class SampleFragment1 : Fragment() {
+ private var _binding: FragmentSample1Binding? = null
+ private val binding get() = _binding ?: error("Binding이 초기화 되지 않았습니다.")
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ _binding = FragmentSample1Binding.inflate(layoutInflater, container, false)
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/SampleFragment2.kt b/again/app/src/main/java/org/sopt/study/againassignment/SampleFragment2.kt
new file mode 100644
index 0000000..0ded41c
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/SampleFragment2.kt
@@ -0,0 +1,29 @@
+package org.sopt.study.againassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import org.sopt.study.againassignment.databinding.FragmentSample1Binding
+import org.sopt.study.againassignment.databinding.FragmentSample2Binding
+
+
+class SampleFragment2 : Fragment() {
+
+ private var _binding: FragmentSample2Binding? = null
+ private val binding get() = _binding ?: error("Binding이 초기화 되지 않았습니다.")
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ _binding = FragmentSample2Binding.inflate(layoutInflater, container, false)
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/SampleService.kt b/again/app/src/main/java/org/sopt/study/againassignment/SampleService.kt
new file mode 100644
index 0000000..34c807a
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/SampleService.kt
@@ -0,0 +1,14 @@
+package org.sopt.study.againassignment
+
+import retrofit2.Call
+import retrofit2.http.Body
+import retrofit2.http.Headers
+import retrofit2.http.POST
+
+interface SampleService {
+ @Headers("Content-Type:application/json")
+ @POST("user/login")
+ fun postLogin(
+ @Body body : RequestLoginData
+ ) : Call
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/Second2Fragment.kt b/again/app/src/main/java/org/sopt/study/againassignment/Second2Fragment.kt
new file mode 100644
index 0000000..14c3477
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/Second2Fragment.kt
@@ -0,0 +1,44 @@
+package org.sopt.study.againassignment
+
+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 org.sopt.study.againassignment.databinding.FragmentSecond2Binding
+
+/**
+ * A simple [Fragment] subclass as the second destination in the navigation.
+ */
+class Second2Fragment : Fragment() {
+
+ private var _binding: FragmentSecond2Binding? = null
+
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+
+ _binding = FragmentSecond2Binding.inflate(inflater, container, false)
+ return binding.root
+
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.buttonSecond.setOnClickListener {
+ findNavController().navigate(R.id.action_Second2Fragment_to_First2Fragment)
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/SecondFragment.kt b/again/app/src/main/java/org/sopt/study/againassignment/SecondFragment.kt
new file mode 100644
index 0000000..21392ac
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/SecondFragment.kt
@@ -0,0 +1,44 @@
+package org.sopt.study.againassignment
+
+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 org.sopt.study.againassignment.databinding.FragmentSecondBinding
+
+/**
+ * A simple [Fragment] subclass as the second destination in the navigation.
+ */
+class SecondFragment : Fragment() {
+
+ private var _binding: FragmentSecondBinding? = null
+
+ // This property is only valid between onCreateView and
+ // onDestroyView.
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+
+ _binding = FragmentSecondBinding.inflate(inflater, container, false)
+ return binding.root
+
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.buttonSecond.setOnClickListener {
+ findNavController().navigate(R.id.action_SecondFragment_to_FirstFragment)
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/ServiceCreator.kt b/again/app/src/main/java/org/sopt/study/againassignment/ServiceCreator.kt
new file mode 100644
index 0000000..de4f181
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/ServiceCreator.kt
@@ -0,0 +1,16 @@
+package org.sopt.study.againassignment
+
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+object ServiceCreator {
+ private const val BASE_URL = "https://asia-northeast3-we-sopt-29.cloudfunctions.net/api/"
+
+ private val retrofit : Retrofit = Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+
+ val sampleService: SampleService = retrofit.create(SampleService::class.java)
+ val signup : SignUp = retrofit.create(SignUp::class.java)
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/SignUp.kt b/again/app/src/main/java/org/sopt/study/againassignment/SignUp.kt
new file mode 100644
index 0000000..de9e395
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/SignUp.kt
@@ -0,0 +1,14 @@
+package org.sopt.study.againassignment
+
+import retrofit2.Call
+import retrofit2.http.Body
+import retrofit2.http.Headers
+import retrofit2.http.POST
+
+interface SignUp {
+ @Headers("Content-Type:application/json")
+ @POST("user/signup")
+ fun postSignup(
+ @Body body : RequestSignupData
+ ) : Call
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/SignUpActivity.kt b/again/app/src/main/java/org/sopt/study/againassignment/SignUpActivity.kt
new file mode 100644
index 0000000..87c24e7
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/SignUpActivity.kt
@@ -0,0 +1,53 @@
+package org.sopt.study.againassignment
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import org.sopt.study.againassignment.databinding.ActivitySignUpBinding
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+
+class SignUpActivity : AppCompatActivity() {
+ lateinit var binding : ActivitySignUpBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySignUpBinding.inflate(layoutInflater)
+ binding.btSignup.setOnClickListener{
+ initNetwork()
+ }
+ setContentView(binding.root)
+ }
+
+ private fun initNetwork(){
+ val requestSignupData = RequestSignupData(
+ id = binding.etSignupId.text.toString(),
+ name = binding.etSignupName.text.toString(),
+ password = binding.etSignupPw.text.toString()
+ )
+
+ val call: Call = ServiceCreator.signup.postSignup(requestSignupData)
+
+ call.enqueue(object: Callback {
+ override fun onResponse(
+ call: Call,
+ response: Response
+ ) {
+ if(response.isSuccessful){
+ val data = response.body()?.data
+
+ Toast.makeText(this@SignUpActivity, "${data?.email}님 회원가입 되었습니다!", Toast.LENGTH_SHORT).show()
+ finish()
+ } else
+ Toast.makeText(this@SignUpActivity, "회원가입에 실패하셨습니다", Toast.LENGTH_SHORT).show()
+ }
+
+ override fun onFailure(call: Call, t: Throwable) {
+ Log.e("NetWorkTest", "error:$t")
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/again/app/src/main/java/org/sopt/study/againassignment/UserData.kt b/again/app/src/main/java/org/sopt/study/againassignment/UserData.kt
new file mode 100644
index 0000000..d31d7c8
--- /dev/null
+++ b/again/app/src/main/java/org/sopt/study/againassignment/UserData.kt
@@ -0,0 +1,6 @@
+package org.sopt.study.againassignment
+
+data class UserData(
+ val name : String,
+ val introduction : String
+)
diff --git a/again/app/src/main/res/drawable-hdpi/img_github.png b/again/app/src/main/res/drawable-hdpi/img_github.png
new file mode 100644
index 0000000..47d97f6
Binary files /dev/null and b/again/app/src/main/res/drawable-hdpi/img_github.png differ
diff --git a/again/app/src/main/res/drawable-mdpi/img_github.png b/again/app/src/main/res/drawable-mdpi/img_github.png
new file mode 100644
index 0000000..4bdd212
Binary files /dev/null and b/again/app/src/main/res/drawable-mdpi/img_github.png differ
diff --git a/AndroidAssignment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/again/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
rename to again/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
diff --git a/again/app/src/main/res/drawable-v24/myface.jpg b/again/app/src/main/res/drawable-v24/myface.jpg
new file mode 100644
index 0000000..da1fd50
Binary files /dev/null and b/again/app/src/main/res/drawable-v24/myface.jpg differ
diff --git a/again/app/src/main/res/drawable-xhdpi/img_github.png b/again/app/src/main/res/drawable-xhdpi/img_github.png
new file mode 100644
index 0000000..2d0ad82
Binary files /dev/null and b/again/app/src/main/res/drawable-xhdpi/img_github.png differ
diff --git a/again/app/src/main/res/drawable-xxhdpi/img_github.png b/again/app/src/main/res/drawable-xxhdpi/img_github.png
new file mode 100644
index 0000000..a20bd43
Binary files /dev/null and b/again/app/src/main/res/drawable-xxhdpi/img_github.png differ
diff --git a/again/app/src/main/res/drawable-xxxhdpi/img_github.png b/again/app/src/main/res/drawable-xxxhdpi/img_github.png
new file mode 100644
index 0000000..3c21de6
Binary files /dev/null and b/again/app/src/main/res/drawable-xxxhdpi/img_github.png differ
diff --git a/again/app/src/main/res/drawable/button_round.xml b/again/app/src/main/res/drawable/button_round.xml
new file mode 100644
index 0000000..09b0df6
--- /dev/null
+++ b/again/app/src/main/res/drawable/button_round.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/drawable/ic_launcher_background.xml b/again/app/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable/ic_launcher_background.xml
rename to again/app/src/main/res/drawable/ic_launcher_background.xml
diff --git a/again/app/src/main/res/drawable/rectangle_border_pink.xml b/again/app/src/main/res/drawable/rectangle_border_pink.xml
new file mode 100644
index 0000000..437938d
--- /dev/null
+++ b/again/app/src/main/res/drawable/rectangle_border_pink.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/drawable/rectangle_fill_gray.xml b/again/app/src/main/res/drawable/rectangle_fill_gray.xml
new file mode 100644
index 0000000..f6d857b
--- /dev/null
+++ b/again/app/src/main/res/drawable/rectangle_fill_gray.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/drawable/selector_sample_text.xml b/again/app/src/main/res/drawable/selector_sample_text.xml
new file mode 100644
index 0000000..9f95281
--- /dev/null
+++ b/again/app/src/main/res/drawable/selector_sample_text.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/font/noto_sans_kr.xml b/again/app/src/main/res/font/noto_sans_kr.xml
new file mode 100644
index 0000000..656d3f2
--- /dev/null
+++ b/again/app/src/main/res/font/noto_sans_kr.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/font/noto_sans_kr_bold.otf b/again/app/src/main/res/font/noto_sans_kr_bold.otf
new file mode 100644
index 0000000..7f4131c
Binary files /dev/null and b/again/app/src/main/res/font/noto_sans_kr_bold.otf differ
diff --git a/again/app/src/main/res/font/noto_sans_kr_regular.otf b/again/app/src/main/res/font/noto_sans_kr_regular.otf
new file mode 100644
index 0000000..e26c1cd
Binary files /dev/null and b/again/app/src/main/res/font/noto_sans_kr_regular.otf differ
diff --git a/again/app/src/main/res/layout/activity_home.xml b/again/app/src/main/res/layout/activity_home.xml
new file mode 100644
index 0000000..08b57b0
--- /dev/null
+++ b/again/app/src/main/res/layout/activity_home.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/activity_main.xml b/again/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..598291f
--- /dev/null
+++ b/again/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/activity_sign_up.xml b/again/app/src/main/res/layout/activity_sign_up.xml
new file mode 100644
index 0000000..4819e0b
--- /dev/null
+++ b/again/app/src/main/res/layout/activity_sign_up.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/fragment_first.xml b/again/app/src/main/res/layout/fragment_first.xml
new file mode 100644
index 0000000..fb44a3d
--- /dev/null
+++ b/again/app/src/main/res/layout/fragment_first.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/fragment_first2.xml b/again/app/src/main/res/layout/fragment_first2.xml
new file mode 100644
index 0000000..8f3e1e2
--- /dev/null
+++ b/again/app/src/main/res/layout/fragment_first2.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/fragment_sample1.xml b/again/app/src/main/res/layout/fragment_sample1.xml
new file mode 100644
index 0000000..44627ac
--- /dev/null
+++ b/again/app/src/main/res/layout/fragment_sample1.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/fragment_sample2.xml b/again/app/src/main/res/layout/fragment_sample2.xml
new file mode 100644
index 0000000..ddee4cb
--- /dev/null
+++ b/again/app/src/main/res/layout/fragment_sample2.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/fragment_second.xml b/again/app/src/main/res/layout/fragment_second.xml
new file mode 100644
index 0000000..bd90524
--- /dev/null
+++ b/again/app/src/main/res/layout/fragment_second.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/fragment_second2.xml b/again/app/src/main/res/layout/fragment_second2.xml
new file mode 100644
index 0000000..6f91a78
--- /dev/null
+++ b/again/app/src/main/res/layout/fragment_second2.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/layout/item_sample_list.xml b/again/app/src/main/res/layout/item_sample_list.xml
new file mode 100644
index 0000000..4b2ff11
--- /dev/null
+++ b/again/app/src/main/res/layout/item_sample_list.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/again/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to again/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/AndroidAssignment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/again/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
rename to again/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
diff --git a/AndroidAssignment/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/again/app/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to again/app/src/main/res/mipmap-hdpi/ic_launcher.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/again/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
rename to again/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/again/app/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to again/app/src/main/res/mipmap-mdpi/ic_launcher.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/again/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
rename to again/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/again/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to again/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/again/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
rename to again/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/again/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to again/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/again/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
rename to again/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/again/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to again/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
diff --git a/AndroidAssignment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/again/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
similarity index 100%
rename from AndroidAssignment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
rename to again/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
diff --git a/again/app/src/main/res/navigation/nav_graph.xml b/again/app/src/main/res/navigation/nav_graph.xml
new file mode 100644
index 0000000..aa8fc7f
--- /dev/null
+++ b/again/app/src/main/res/navigation/nav_graph.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/navigation/nav_graph2.xml b/again/app/src/main/res/navigation/nav_graph2.xml
new file mode 100644
index 0000000..7565710
--- /dev/null
+++ b/again/app/src/main/res/navigation/nav_graph2.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/values-land/dimens.xml b/again/app/src/main/res/values-land/dimens.xml
new file mode 100644
index 0000000..22d7f00
--- /dev/null
+++ b/again/app/src/main/res/values-land/dimens.xml
@@ -0,0 +1,3 @@
+
+ 48dp
+
\ No newline at end of file
diff --git a/again/app/src/main/res/values-night/themes.xml b/again/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..6440d48
--- /dev/null
+++ b/again/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/main/res/values-w1240dp/dimens.xml b/again/app/src/main/res/values-w1240dp/dimens.xml
new file mode 100644
index 0000000..d73f4a3
--- /dev/null
+++ b/again/app/src/main/res/values-w1240dp/dimens.xml
@@ -0,0 +1,3 @@
+
+ 200dp
+
\ No newline at end of file
diff --git a/again/app/src/main/res/values-w600dp/dimens.xml b/again/app/src/main/res/values-w600dp/dimens.xml
new file mode 100644
index 0000000..22d7f00
--- /dev/null
+++ b/again/app/src/main/res/values-w600dp/dimens.xml
@@ -0,0 +1,3 @@
+
+ 48dp
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/values/colors.xml b/again/app/src/main/res/values/colors.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/values/colors.xml
rename to again/app/src/main/res/values/colors.xml
diff --git a/again/app/src/main/res/values/dimens.xml b/again/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..125df87
--- /dev/null
+++ b/again/app/src/main/res/values/dimens.xml
@@ -0,0 +1,3 @@
+
+ 16dp
+
\ No newline at end of file
diff --git a/again/app/src/main/res/values/strings.xml b/again/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..80ef0d4
--- /dev/null
+++ b/again/app/src/main/res/values/strings.xml
@@ -0,0 +1,15 @@
+
+ AgainAssignment
+
+ Hello blank fragment
+ SignInActivity
+
+ First Fragment
+ Second Fragment
+ Next
+ Previous
+
+ Hello first fragment
+ Hello second fragment. Arg: %1$s
+ SignUpActivity
+
\ No newline at end of file
diff --git a/again/app/src/main/res/values/themes.xml b/again/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..70c5ecc
--- /dev/null
+++ b/again/app/src/main/res/values/themes.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/again/app/src/test/java/org/sopt/study/againassignment/ExampleUnitTest.kt b/again/app/src/test/java/org/sopt/study/againassignment/ExampleUnitTest.kt
new file mode 100644
index 0000000..25194ef
--- /dev/null
+++ b/again/app/src/test/java/org/sopt/study/againassignment/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package org.sopt.study.againassignment
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/again/build.gradle b/again/build.gradle
new file mode 100644
index 0000000..d4efb62
--- /dev/null
+++ b/again/build.gradle
@@ -0,0 +1,18 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:7.0.3"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/AndroidAssignment/gradle.properties b/again/gradle.properties
similarity index 100%
rename from AndroidAssignment/gradle.properties
rename to again/gradle.properties
diff --git a/AndroidAssignment/gradle/wrapper/gradle-wrapper.jar b/again/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from AndroidAssignment/gradle/wrapper/gradle-wrapper.jar
rename to again/gradle/wrapper/gradle-wrapper.jar
diff --git a/again/gradle/wrapper/gradle-wrapper.properties b/again/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..548b549
--- /dev/null
+++ b/again/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Nov 10 21:22:35 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/AndroidAssignment/gradlew b/again/gradlew
similarity index 100%
rename from AndroidAssignment/gradlew
rename to again/gradlew
diff --git a/AndroidAssignment/gradlew.bat b/again/gradlew.bat
similarity index 100%
rename from AndroidAssignment/gradlew.bat
rename to again/gradlew.bat
diff --git a/again/postman1.PNG b/again/postman1.PNG
new file mode 100644
index 0000000..450bf3d
Binary files /dev/null and b/again/postman1.PNG differ
diff --git a/again/settings.gradle b/again/settings.gradle
new file mode 100644
index 0000000..003a736
--- /dev/null
+++ b/again/settings.gradle
@@ -0,0 +1,10 @@
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+rootProject.name = "AgainAssignment"
+include ':app'
diff --git "a/again/\353\241\234\352\267\270\354\235\270\354\204\261\352\263\2651.png" "b/again/\353\241\234\352\267\270\354\235\270\354\204\261\352\263\2651.png"
new file mode 100644
index 0000000..a1a5602
Binary files /dev/null and "b/again/\353\241\234\352\267\270\354\235\270\354\204\261\352\263\2651.png" differ
diff --git "a/again/\353\241\234\352\267\270\354\235\270\354\204\261\352\263\2652.png" "b/again/\353\241\234\352\267\270\354\235\270\354\204\261\352\263\2652.png"
new file mode 100644
index 0000000..c31204a
Binary files /dev/null and "b/again/\353\241\234\352\267\270\354\235\270\354\204\261\352\263\2652.png" differ
diff --git "a/again/\353\241\234\352\267\270\354\235\270\354\213\244\355\214\2501.png" "b/again/\353\241\234\352\267\270\354\235\270\354\213\244\355\214\2501.png"
new file mode 100644
index 0000000..83a7d27
Binary files /dev/null and "b/again/\353\241\234\352\267\270\354\235\270\354\213\244\355\214\2501.png" differ
diff --git "a/again/\353\241\234\352\267\270\354\235\270\354\213\244\355\214\2502.png" "b/again/\353\241\234\352\267\270\354\235\270\354\213\244\355\214\2502.png"
new file mode 100644
index 0000000..cc94bd5
Binary files /dev/null and "b/again/\353\241\234\352\267\270\354\235\270\354\213\244\355\214\2502.png" differ
diff --git "a/again/\355\232\214\354\233\220\352\260\200\354\236\2051.png" "b/again/\355\232\214\354\233\220\352\260\200\354\236\2051.png"
new file mode 100644
index 0000000..625d3e9
Binary files /dev/null and "b/again/\355\232\214\354\233\220\352\260\200\354\236\2051.png" differ
diff --git "a/again/\355\232\214\354\233\220\352\260\200\354\236\2052.png" "b/again/\355\232\214\354\233\220\352\260\200\354\236\2052.png"
new file mode 100644
index 0000000..cf7eb9b
Binary files /dev/null and "b/again/\355\232\214\354\233\220\352\260\200\354\236\2052.png" differ
diff --git "a/again/\355\232\214\354\233\220\352\260\200\354\236\2053.png" "b/again/\355\232\214\354\233\220\352\260\200\354\236\2053.png"
new file mode 100644
index 0000000..a5d9e43
Binary files /dev/null and "b/again/\355\232\214\354\233\220\352\260\200\354\236\2053.png" differ
diff --git a/assignment/.idea/assignment.iml b/assignment/.idea/assignment.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/assignment/.idea/assignment.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/.gitignore b/assignment/AndroidAssignment/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/assignment/AndroidAssignment/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/assignment/AndroidAssignment/.idea/.gitignore b/assignment/AndroidAssignment/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/assignment/AndroidAssignment/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/AndroidAssignment/.idea/codeStyles/Project.xml b/assignment/AndroidAssignment/.idea/codeStyles/Project.xml
similarity index 100%
rename from AndroidAssignment/.idea/codeStyles/Project.xml
rename to assignment/AndroidAssignment/.idea/codeStyles/Project.xml
diff --git a/AndroidAssignment/.idea/codeStyles/codeStyleConfig.xml b/assignment/AndroidAssignment/.idea/codeStyles/codeStyleConfig.xml
similarity index 100%
rename from AndroidAssignment/.idea/codeStyles/codeStyleConfig.xml
rename to assignment/AndroidAssignment/.idea/codeStyles/codeStyleConfig.xml
diff --git a/assignment/AndroidAssignment/.idea/compiler.xml b/assignment/AndroidAssignment/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/assignment/AndroidAssignment/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/.idea/gradle.xml b/assignment/AndroidAssignment/.idea/gradle.xml
new file mode 100644
index 0000000..526b4c2
--- /dev/null
+++ b/assignment/AndroidAssignment/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/.idea/misc.xml b/assignment/AndroidAssignment/.idea/misc.xml
new file mode 100644
index 0000000..93abe6b
--- /dev/null
+++ b/assignment/AndroidAssignment/.idea/misc.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidAssignment/.idea/vcs.xml b/assignment/AndroidAssignment/.idea/vcs.xml
similarity index 83%
rename from AndroidAssignment/.idea/vcs.xml
rename to assignment/AndroidAssignment/.idea/vcs.xml
index 8e7ad31..b3e3d1c 100644
--- a/AndroidAssignment/.idea/vcs.xml
+++ b/assignment/AndroidAssignment/.idea/vcs.xml
@@ -1,6 +1,7 @@
+
diff --git a/assignment/AndroidAssignment/app/.gitignore b/assignment/AndroidAssignment/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/assignment/AndroidAssignment/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/AndroidAssignment/app/build.gradle b/assignment/AndroidAssignment/app/build.gradle
similarity index 76%
rename from AndroidAssignment/app/build.gradle
rename to assignment/AndroidAssignment/app/build.gradle
index 8c5b1fd..4cbc288 100644
--- a/AndroidAssignment/app/build.gradle
+++ b/assignment/AndroidAssignment/app/build.gradle
@@ -40,6 +40,13 @@ android {
dependencies {
+ implementation "com.squareup.retrofit2:retrofit:2.9.0" //서버 연결을 위한 Retrofit2
+ implementation "com.squareup.retrofit2:converter-gson:2.9.0" //Retrofit2에서 gson 사용을 위한 컨버터
+ implementation "com.google.code.gson:gson:2.8.6" // gson
+
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
diff --git a/assignment/AndroidAssignment/app/proguard-rules.pro b/assignment/AndroidAssignment/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/assignment/AndroidAssignment/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/androidTest/java/org/sopt/androidassignment/ExampleInstrumentedTest.kt b/assignment/AndroidAssignment/app/src/androidTest/java/org/sopt/androidassignment/ExampleInstrumentedTest.kt
similarity index 100%
rename from AndroidAssignment/app/src/androidTest/java/org/sopt/androidassignment/ExampleInstrumentedTest.kt
rename to assignment/AndroidAssignment/app/src/androidTest/java/org/sopt/androidassignment/ExampleInstrumentedTest.kt
diff --git a/AndroidAssignment/app/src/main/AndroidManifest.xml b/assignment/AndroidAssignment/app/src/main/AndroidManifest.xml
similarity index 86%
rename from AndroidAssignment/app/src/main/AndroidManifest.xml
rename to assignment/AndroidAssignment/app/src/main/AndroidManifest.xml
index c5b446a..e7dbe1c 100644
--- a/AndroidAssignment/app/src/main/AndroidManifest.xml
+++ b/assignment/AndroidAssignment/app/src/main/AndroidManifest.xml
@@ -6,18 +6,14 @@
-
-
+
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/CameraFragment.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/CameraFragment.kt
new file mode 100644
index 0000000..c09f9c3
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/CameraFragment.kt
@@ -0,0 +1,59 @@
+package org.sopt.androidassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [CameraFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class CameraFragment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_camera, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment CameraFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ CameraFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerAdapter.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerAdapter.kt
new file mode 100644
index 0000000..9966dbf
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerAdapter.kt
@@ -0,0 +1,33 @@
+package org.sopt.androidassignment
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.sopt.androidassignment.databinding.GitFollowerListBinding
+
+class FollowerAdapter : RecyclerView.Adapter(){
+ val userList = mutableListOf()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): FollowerViewHolder {
+ val binding = GitFollowerListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return FollowerViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: FollowerAdapter.FollowerViewHolder, position: Int) {
+ holder.onBind(userList[position])
+ }
+
+ override fun getItemCount(): Int = userList.size
+
+ class FollowerViewHolder(private val binding : GitFollowerListBinding)
+ : RecyclerView.ViewHolder(binding.root){
+ fun onBind(data:FollowerData){
+ binding.tvFollowerName.text = data.name
+ binding.tvFollowerIntroduce.text = data.introduction
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerData.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerData.kt
new file mode 100644
index 0000000..3032a1d
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerData.kt
@@ -0,0 +1,5 @@
+package org.sopt.androidassignment
+
+data class FollowerData(
+ val name : String,
+ val introduction : String)
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerListFragment.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerListFragment.kt
new file mode 100644
index 0000000..88e7116
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/FollowerListFragment.kt
@@ -0,0 +1,45 @@
+package org.sopt.androidassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import org.sopt.androidassignment.databinding.FragmentFollowerListBinding
+
+class FollowerList : Fragment() {
+ private var _binding:FragmentFollowerListBinding? = null
+ private val binding get() = _binding!!
+ private lateinit var followerAdapter: FollowerAdapter
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ _binding = FragmentFollowerListBinding.inflate(layoutInflater, container, false)
+ initAdapter()
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+ private fun initAdapter(){
+ followerAdapter = FollowerAdapter()
+
+ binding.rvFollower.adapter = followerAdapter
+ followerAdapter.userList.addAll(
+ listOf(
+ FollowerData("권용민", "안드로이드 YB"),
+ FollowerData("김용민", "서버 YB"),
+ FollowerData("박용민", "IOS YB"),
+ FollowerData("최용민", "웹 YB"),
+ FollowerData("이용민", "기획 YB"),
+ FollowerData("나용민", "디자인 YB")
+ )
+ )
+ followerAdapter.notifyDataSetChanged()
+ }
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeActivity.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeActivity.kt
new file mode 100644
index 0000000..59a1327
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeActivity.kt
@@ -0,0 +1,109 @@
+package org.sopt.androidassignment
+
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import androidx.viewpager2.widget.ViewPager2
+import org.sopt.androidassignment.databinding.ActivityHomeBinding
+import org.sopt.androidassignment.databinding.FragmentProfileBinding
+
+
+class HomeActivity : AppCompatActivity() {
+ private lateinit var binding : ActivityHomeBinding
+ private var position = FOLL_FRAGMENT
+ private lateinit var binding2 : FragmentProfileBinding
+ private lateinit var sampleViewPagerAdapter: SampleViewPagerAdapter
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ binding = ActivityHomeBinding.inflate(layoutInflater)
+
+ initAdapter()
+ initBottomNavigation()
+ //initTransactionEvent()
+ setContentView(binding.root)
+ }
+
+ private fun initAdapter(){
+
+ val fragmentList = listOf(ProfileFragment(), HomeFragment(), CameraFragment())
+
+ sampleViewPagerAdapter = SampleViewPagerAdapter(this)
+ sampleViewPagerAdapter.fragments.addAll(fragmentList)
+
+ binding.vpSample.adapter = sampleViewPagerAdapter
+ }
+
+ private fun initBottomNavigation(){
+ binding.vpSample.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
+ override fun onPageSelected(position: Int) {
+ binding.bnvSample.menu.getItem(position).isChecked=true
+ }
+ })
+
+ binding.bnvSample.setOnItemSelectedListener{
+ when(it.itemId){
+ R.id.menu_android->{
+ binding.vpSample.currentItem=FIRST_FRAGMENT
+ return@setOnItemSelectedListener true
+ }
+ R.id.menu_list->{
+ binding.vpSample.currentItem= SECOND_FRAGMENT
+ return@setOnItemSelectedListener true
+ }
+ else->{
+ binding.vpSample.currentItem= THIRD_FRAGMENT
+ return@setOnItemSelectedListener true
+ }
+ }
+ }
+ }
+
+ companion object{
+ const val FIRST_FRAGMENT=0
+ const val SECOND_FRAGMENT=1
+ const val THIRD_FRAGMENT=2
+
+ const val FOLL_FRAGMENT = 1
+ const val REPO_FRAGMENT = 2
+ }
+
+ fun initTransactionEvent(){
+ val fragment1 = FollowerList()
+ val fragment2 = RepositoryListFragment()
+ supportFragmentManager.beginTransaction().add(R.id.container_fragment, fragment1).commit()
+
+ binding2.btHomeFollower.setOnClickListener{
+ val transaction = supportFragmentManager.beginTransaction()
+
+ when(position){
+ FOLL_FRAGMENT->{
+ transaction.replace(R.id.container_fragment, fragment1)
+ position = FOLL_FRAGMENT
+ }
+ REPO_FRAGMENT->{
+ transaction.replace(R.id.container_fragment, fragment1)
+ position= FOLL_FRAGMENT
+ }
+ }
+ transaction.commit()
+ }
+ binding2.btHomeRepository.setOnClickListener{
+ val transaction = supportFragmentManager.beginTransaction()
+ when(position){
+ FOLL_FRAGMENT->{
+ transaction.replace(R.id.container_fragment, fragment2)
+ position= REPO_FRAGMENT
+ }
+ REPO_FRAGMENT->{
+ transaction.replace(R.id.container_fragment, fragment2)
+ position= REPO_FRAGMENT
+ }
+ }
+
+ transaction.commit()
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeFragment.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeFragment.kt
new file mode 100644
index 0000000..5a9fd79
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/HomeFragment.kt
@@ -0,0 +1,59 @@
+package org.sopt.androidassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [HomeFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class HomeFragment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_home, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment HomeFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ HomeFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/ProfileFragment.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/ProfileFragment.kt
new file mode 100644
index 0000000..c40bc66
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/ProfileFragment.kt
@@ -0,0 +1,23 @@
+package org.sopt.androidassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import org.sopt.androidassignment.databinding.FragmentProfileBinding
+
+
+class ProfileFragment : Fragment() {
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+
+ return inflater.inflate(R.layout.fragment_profile, container, false)
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryAdapter.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryAdapter.kt
new file mode 100644
index 0000000..f8ccd12
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryAdapter.kt
@@ -0,0 +1,32 @@
+package org.sopt.androidassignment
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.sopt.androidassignment.databinding.GitRepositoryListBinding
+
+class RepositoryAdapter : RecyclerView.Adapter(){
+ val repoList = mutableListOf()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): RepositoryViewHolder {
+ val binding = GitRepositoryListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return RepositoryViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: RepositoryAdapter.RepositoryViewHolder, position: Int) {
+ holder.onBind(repoList[position])
+ }
+
+ override fun getItemCount(): Int = repoList.size
+
+ class RepositoryViewHolder(private val binding:GitRepositoryListBinding)
+ :RecyclerView.ViewHolder(binding.root){
+ fun onBind(data:RepositoryData){
+ binding.tvRepository.text = data.repo
+ binding.tvIntro.text = data.intro
+ }
+ }
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryData.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryData.kt
new file mode 100644
index 0000000..07029f3
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryData.kt
@@ -0,0 +1,5 @@
+package org.sopt.androidassignment
+
+data class RepositoryData(
+ val repo : String, val intro : String
+)
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryListFragment.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryListFragment.kt
new file mode 100644
index 0000000..7f83818
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/RepositoryListFragment.kt
@@ -0,0 +1,47 @@
+package org.sopt.androidassignment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.GridLayoutManager
+import org.sopt.androidassignment.databinding.FragmentRepositoryListBinding
+
+class RepositoryListFragment : Fragment() {
+ private var _binding : FragmentRepositoryListBinding? = null
+ private val binding get() = _binding!!
+ private lateinit var repositoryAdapter: RepositoryAdapter
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ _binding = FragmentRepositoryListBinding.inflate(layoutInflater, container, false)
+ initAdapter()
+ binding.rvRepository.adapter = repositoryAdapter
+ binding.rvRepository.layoutManager= GridLayoutManager(activity, 2)
+ return binding.root
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+ private fun initAdapter(){
+ repositoryAdapter = RepositoryAdapter()
+
+ binding.rvRepository.adapter=repositoryAdapter
+ repositoryAdapter.repoList.addAll(
+ listOf(
+ RepositoryData("안드로이드 과제1\n레포지토리", "1주차 과제"),
+ RepositoryData("안드로이드 과제2\n레포지토리", "글자수 제한을 체크하겠습니다."),
+ RepositoryData("왕초보 스터디\n레포지토리", "제못제잘 과제"),
+ RepositoryData("코틀린 스터디\n레포지토리", "코틀린 가만안드.. 과제"),
+ RepositoryData("솝탁 스터디\n레포지토리", "알고리즘 과제"),
+ RepositoryData("풋살 스터디\n레포지토리", "개발스터디란 우리가 개발이라는"),
+
+ )
+ )
+ }
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SampleViewPagerAdapter.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SampleViewPagerAdapter.kt
new file mode 100644
index 0000000..4f6e07c
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SampleViewPagerAdapter.kt
@@ -0,0 +1,13 @@
+package org.sopt.androidassignment
+
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.viewpager2.adapter.FragmentStateAdapter
+
+class SampleViewPagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
+ val fragments = mutableListOf()
+
+ override fun getItemCount(): Int =fragments.size
+
+ override fun createFragment(position: Int): Fragment = fragments[position]
+}
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignInActivity.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignInActivity.kt
new file mode 100644
index 0000000..2f82dbb
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignInActivity.kt
@@ -0,0 +1,82 @@
+package org.sopt.androidassignment
+
+import android.app.Activity
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import org.sopt.androidassignment.databinding.ActivitySignInBinding
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+
+class SignInActivity : AppCompatActivity() {
+
+ private lateinit var binding : ActivitySignInBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ binding = ActivitySignInBinding.inflate(layoutInflater)
+
+ val intent = Intent(this, HomeActivity::class.java)
+ binding.btLogin.setOnClickListener{
+ var str = binding.etId.getText()
+ var pw = binding.etPw.getText()
+ if(!str.isEmpty() && !pw.isEmpty()){
+ Toast.makeText(this, "${str}님 환영합니다.", Toast.LENGTH_SHORT).show()
+ startActivity(intent)
+ //initNetwork()
+ }
+ else{
+ Toast.makeText(this, "로그인 실패", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ val intent2 = Intent(this, SignUpActivity::class.java)
+ binding.btSignin.setOnClickListener{
+ startActivity(intent2)
+ }
+
+ val id = getIntent().getStringExtra("id")
+ val pw = getIntent().getStringExtra("pw")
+
+ binding.etId.setText(id)
+ binding.etPw.setText(pw)
+
+
+
+ setContentView(binding.root)
+ }
+
+// private fun initNetwork(){
+// val requestLoginData = RequestLoginData(
+// //email = binding.etId.text.toString(),
+// binding.etId.text.toString(),
+// //password = binding.etPw.text.toString()
+// binding.etPw.text.toString()
+// )
+//
+// val call: Call = ServiceCreator.sampleService.postLogin(requestLoginData)
+// call.enqueue(object : Callback {
+// override fun onResponse(
+// call: Call,
+// response: Response
+// ){
+// if(response.isSuccessful){
+// val data = response.body()?.data
+//
+// Toast.makeText(this@SignInActivity, "${data?.email}님 반갑습니다!", Toast.LENGTH_SHORT).show()
+// startActivity(Intent(this@SignInActivity, HomeActivity::class.java))
+// } else
+// Toast.makeText(this@SignInActivity, "로그인에 실패하셨습니다", Toast.LENGTH_LONG).show()
+// }
+//
+// override fun onFailure(call: Call, t: Throwable) {
+// TODO("Not yet implemented")
+// Log.e("NetworkText", "error:$t")
+// }
+// })
+// }
+}
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignUpActivity.kt b/assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignUpActivity.kt
similarity index 100%
rename from AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignUpActivity.kt
rename to assignment/AndroidAssignment/app/src/main/java/org/sopt/androidassignment/SignUpActivity.kt
diff --git a/assignment/AndroidAssignment/app/src/main/res/color/selector_bottom_navi.xml b/assignment/AndroidAssignment/app/src/main/res/color/selector_bottom_navi.xml
new file mode 100644
index 0000000..740d35f
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/color/selector_bottom_navi.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/color/selector_button.xml b/assignment/AndroidAssignment/app/src/main/res/color/selector_button.xml
new file mode 100644
index 0000000..80905a8
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/color/selector_button.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/color/selector_button_text.xml b/assignment/AndroidAssignment/app/src/main/res/color/selector_button_text.xml
new file mode 100644
index 0000000..d6cce94
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/color/selector_button_text.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/color/selector_edittext.xml b/assignment/AndroidAssignment/app/src/main/res/color/selector_edittext.xml
new file mode 100644
index 0000000..02f1393
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/color/selector_edittext.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/color/selector_edittext_border.xml b/assignment/AndroidAssignment/app/src/main/res/color/selector_edittext_border.xml
new file mode 100644
index 0000000..eb476eb
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/color/selector_edittext_border.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/assignment/AndroidAssignment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/drawable/border.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/border.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable/border.xml
rename to assignment/AndroidAssignment/app/src/main/res/drawable/border.xml
diff --git a/AndroidAssignment/app/src/main/res/drawable/bt_git.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/bt_git.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable/bt_git.xml
rename to assignment/AndroidAssignment/app/src/main/res/drawable/bt_git.xml
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/button_clicked.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/button_clicked.xml
new file mode 100644
index 0000000..2c622a8
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable/button_clicked.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/button_round.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/button_round.xml
new file mode 100644
index 0000000..f6ac63d
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable/button_round.xml
@@ -0,0 +1,16 @@
+
+ //10만큼 각모서리에
+
+
+
+ //내부 색 설정
+ //각 모서리를 12dp만큼 둥글게 만들겠다ㅣ.
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_camera_alt_24.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_camera_alt_24.xml
new file mode 100644
index 0000000..13186de
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_camera_alt_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_home_24.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_home_24.xml
new file mode 100644
index 0000000..3a4c7da
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_home_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_person_24.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_person_24.xml
new file mode 100644
index 0000000..6bdced2
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_baseline_person_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/ic_launcher_background.xml b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AndroidAssignment/app/src/main/res/drawable/imagegit.jpg b/assignment/AndroidAssignment/app/src/main/res/drawable/imagegit.jpg
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable/imagegit.jpg
rename to assignment/AndroidAssignment/app/src/main/res/drawable/imagegit.jpg
diff --git a/assignment/AndroidAssignment/app/src/main/res/drawable/img_github.png b/assignment/AndroidAssignment/app/src/main/res/drawable/img_github.png
new file mode 100644
index 0000000..302cf12
Binary files /dev/null and b/assignment/AndroidAssignment/app/src/main/res/drawable/img_github.png differ
diff --git a/AndroidAssignment/app/src/main/res/drawable/my_face2.jpg b/assignment/AndroidAssignment/app/src/main/res/drawable/my_face2.jpg
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable/my_face2.jpg
rename to assignment/AndroidAssignment/app/src/main/res/drawable/my_face2.jpg
diff --git a/AndroidAssignment/app/src/main/res/drawable/myface.jpg b/assignment/AndroidAssignment/app/src/main/res/drawable/myface.jpg
similarity index 100%
rename from AndroidAssignment/app/src/main/res/drawable/myface.jpg
rename to assignment/AndroidAssignment/app/src/main/res/drawable/myface.jpg
diff --git a/AndroidAssignment/app/src/main/res/font/allerta.xml b/assignment/AndroidAssignment/app/src/main/res/font/allerta.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/font/allerta.xml
rename to assignment/AndroidAssignment/app/src/main/res/font/allerta.xml
diff --git a/AndroidAssignment/app/src/main/res/font/anton.xml b/assignment/AndroidAssignment/app/src/main/res/font/anton.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/font/anton.xml
rename to assignment/AndroidAssignment/app/src/main/res/font/anton.xml
diff --git a/AndroidAssignment/app/src/main/res/font/archivo_black.xml b/assignment/AndroidAssignment/app/src/main/res/font/archivo_black.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/font/archivo_black.xml
rename to assignment/AndroidAssignment/app/src/main/res/font/archivo_black.xml
diff --git a/AndroidAssignment/app/src/main/res/font/basic.xml b/assignment/AndroidAssignment/app/src/main/res/font/basic.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/font/basic.xml
rename to assignment/AndroidAssignment/app/src/main/res/font/basic.xml
diff --git a/AndroidAssignment/app/src/main/res/font/capriola.xml b/assignment/AndroidAssignment/app/src/main/res/font/capriola.xml
similarity index 100%
rename from AndroidAssignment/app/src/main/res/font/capriola.xml
rename to assignment/AndroidAssignment/app/src/main/res/font/capriola.xml
diff --git a/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr.xml b/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr.xml
new file mode 100644
index 0000000..3953f7d
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr_bold.otf b/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr_bold.otf
new file mode 100644
index 0000000..7f4131c
Binary files /dev/null and b/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr_bold.otf differ
diff --git a/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr_regular.otf b/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr_regular.otf
new file mode 100644
index 0000000..e26c1cd
Binary files /dev/null and b/assignment/AndroidAssignment/app/src/main/res/font/noto_sans_kr_regular.otf differ
diff --git a/assignment/AndroidAssignment/app/src/main/res/layout/activity_home.xml b/assignment/AndroidAssignment/app/src/main/res/layout/activity_home.xml
new file mode 100644
index 0000000..fa5246e
--- /dev/null
+++ b/assignment/AndroidAssignment/app/src/main/res/layout/activity_home.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/layout/activity_sign_in.xml b/assignment/AndroidAssignment/app/src/main/res/layout/activity_sign_in.xml
similarity index 54%
rename from AndroidAssignment/app/src/main/res/layout/activity_sign_in.xml
rename to assignment/AndroidAssignment/app/src/main/res/layout/activity_sign_in.xml
index 8973f89..2c0eff8 100644
--- a/AndroidAssignment/app/src/main/res/layout/activity_sign_in.xml
+++ b/assignment/AndroidAssignment/app/src/main/res/layout/activity_sign_in.xml
@@ -6,46 +6,38 @@
android:layout_height="match_parent"
tools:context=".SignInActivity">
-
-
+ app:layout_constraintTop_toBottomOf="@+id/imageView" />
@@ -54,27 +46,31 @@
android:id="@+id/tv_pw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="50dp"
+ android:layout_marginTop="34dp"
+ android:fontFamily="@font/noto_sans_kr"
+ android:textFontWeight="700"
android:text="비밀번호"
android:textColor="#000000"
- android:textStyle="bold"
- android:fontFamily="@font/allerta"
- android:textSize="18dp"
+ android:textSize="14sp"
+ android:textStyle="normal"
app:layout_constraintStart_toStartOf="@+id/et_id"
app:layout_constraintTop_toBottomOf="@+id/et_id" />
@@ -82,43 +78,59 @@
+ app:layout_constraintStart_toStartOf="@+id/et_pw"
+ app:layout_constraintTop_toBottomOf="@+id/et_pw" />
+ android:textFontWeight="700"
+ android:textSize="12dp"
+ android:textStyle="normal"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/tv_signUp"
+ app:layout_constraintTop_toBottomOf="@+id/bt_login" />
-
+ app:layout_constraintTop_toTopOf="parent"
+ app:srcCompat="@drawable/img_github" />
+
+
\ No newline at end of file
diff --git a/AndroidAssignment/app/src/main/res/layout/activity_sign_up.xml b/assignment/AndroidAssignment/app/src/main/res/layout/activity_sign_up.xml
similarity index 60%
rename from AndroidAssignment/app/src/main/res/layout/activity_sign_up.xml
rename to assignment/AndroidAssignment/app/src/main/res/layout/activity_sign_up.xml
index 2da31e5..fa451af 100644
--- a/AndroidAssignment/app/src/main/res/layout/activity_sign_up.xml
+++ b/assignment/AndroidAssignment/app/src/main/res/layout/activity_sign_up.xml
@@ -6,62 +6,54 @@
android:layout_height="match_parent"
tools:context=".SignUpActivity">
-
-
+ app:layout_constraintTop_toTopOf="parent" />
@@ -100,27 +99,34 @@
android:id="@+id/tv_su_pw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="30dp"
- android:fontFamily="@font/allerta"
+ android:layout_marginTop="34dp"
+ android:fontFamily="@font/noto_sans_kr"
+ android:textFontWeight="700"
android:text="비밀번호"
android:textColor="#000000"
- android:textSize="18dp"
- android:textStyle="bold"
+ android:textSize="14sp"
+ android:textStyle="normal"
app:layout_constraintStart_toStartOf="@+id/et_su_id"
app:layout_constraintTop_toBottomOf="@+id/et_su_id" />
@@ -128,14 +134,17 @@