diff --git a/.DS_Store b/.DS_Store
index 59dfd6c4..de23f9c0 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/README.md b/README.md
index 4f3f8aa0..ae4b3deb 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
| 둘째마당 02 | 레이아웃 | `진행 완료` | second/layout |
| 둘째마당 03 | 기본위젯과 드로어블 | `진행 완료` | second/widget |
| 둘째마당 04 | 화면 간 전환 | `진행 완료` | second/inflate |
-| 둘째마당 05 | 프래그먼트 | `진행 전` |
+| 둘째마당 05 | 프래그먼트 | `진행 전` | second/fragment |
| 둘째마당 06 | 서비스와 수신자 | `진행 전` |
| 둘째마당 07 | 선택위젯 만들기 | `진행 전` |
| 둘째마당 08 | 애니메이션(참고) | `진행 전` |
diff --git a/second/.DS_Store b/second/.DS_Store
index 6ef06dd8..4a2e531e 100644
Binary files a/second/.DS_Store and b/second/.DS_Store differ
diff --git a/second/05_fragment/.DS_Store b/second/05_fragment/.DS_Store
new file mode 100644
index 00000000..cd0a37c6
Binary files /dev/null and b/second/05_fragment/.DS_Store differ
diff --git a/second/05_fragment/SampleActionBar1/.gitignore b/second/05_fragment/SampleActionBar1/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.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/second/05_fragment/SampleActionBar1/.idea/.gitignore b/second/05_fragment/SampleActionBar1/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleActionBar1/.idea/compiler.xml b/second/05_fragment/SampleActionBar1/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/.idea/gradle.xml b/second/05_fragment/SampleActionBar1/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/.idea/jarRepositories.xml b/second/05_fragment/SampleActionBar1/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/.idea/misc.xml b/second/05_fragment/SampleActionBar1/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/.idea/runConfigurations.xml b/second/05_fragment/SampleActionBar1/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/.idea/vcs.xml b/second/05_fragment/SampleActionBar1/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/.gitignore b/second/05_fragment/SampleActionBar1/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/build.gradle b/second/05_fragment/SampleActionBar1/app/build.gradle
new file mode 100644
index 00000000..293bc7a1
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.actionbar1"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SampleActionBar1/app/proguard-rules.pro b/second/05_fragment/SampleActionBar1/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/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/second/05_fragment/SampleActionBar1/app/src/androidTest/java/com/example/actionbar1/ExampleInstrumentedTest.java b/second/05_fragment/SampleActionBar1/app/src/androidTest/java/com/example/actionbar1/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..5b7c3dee
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/androidTest/java/com/example/actionbar1/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.actionbar1;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.actionbar1", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleActionBar1/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..a65d1d72
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/java/com/example/actionbar1/MainActivity.java b/second/05_fragment/SampleActionBar1/app/src/main/java/com/example/actionbar1/MainActivity.java
new file mode 100644
index 00000000..71c4a2bd
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/java/com/example/actionbar1/MainActivity.java
@@ -0,0 +1,58 @@
+package com.example.actionbar1;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.Toast;
+
+public class MainActivity extends AppCompatActivity {
+ ActionBar abar;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ abar = getSupportActionBar();
+
+ Button button = findViewById(R.id.button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ abar.setLogo(R.drawable.home);
+ abar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_USE_LOGO);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ int curId = item.getItemId();
+ switch (curId) {
+ case R.id.menu_refresh:
+ Toast.makeText(this, "새로고침 메뉴가 선택되었습니다. ", Toast.LENGTH_SHORT).show();
+ break;
+ case R.id.menu_search:
+ Toast.makeText(this, "검색 메뉴가 선택되었습니다. ", Toast.LENGTH_SHORT).show();
+ break;
+ case R.id.menu_settings:
+ Toast.makeText(this, "설정 메뉴가 선택되었습니다. ", Toast.LENGTH_SHORT).show();
+ break;
+ default:
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/drawable-v24/home.png b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable-v24/home.png
new file mode 100644
index 00000000..7f4fe6fe
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable-v24/home.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_refresh.png b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_refresh.png
new file mode 100644
index 00000000..6a3c7c86
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_refresh.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_search.png b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_search.png
new file mode 100644
index 00000000..3a7a7322
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_search.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_settings.png b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_settings.png
new file mode 100644
index 00000000..7f265284
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/drawable/menu_settings.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..f2828d88
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/menu/menu_main.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 00000000..2431bedb
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..4131cd76
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/values/colors.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/values/strings.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..a60063d0
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleActionBar1
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/main/res/values/themes.xml b/second/05_fragment/SampleActionBar1/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..a7ac5c88
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/app/src/test/java/com/example/actionbar1/ExampleUnitTest.java b/second/05_fragment/SampleActionBar1/app/src/test/java/com/example/actionbar1/ExampleUnitTest.java
new file mode 100644
index 00000000..8046a2f5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/app/src/test/java/com/example/actionbar1/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.actionbar1;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/build.gradle b/second/05_fragment/SampleActionBar1/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/gradle.properties b/second/05_fragment/SampleActionBar1/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar1/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleActionBar1/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleActionBar1/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleActionBar1/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleActionBar1/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..b68ecdf5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jul 27 01:56:20 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleActionBar1/gradlew b/second/05_fragment/SampleActionBar1/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleActionBar1/gradlew.bat b/second/05_fragment/SampleActionBar1/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleActionBar1/settings.gradle b/second/05_fragment/SampleActionBar1/settings.gradle
new file mode 100644
index 00000000..b8d95bee
--- /dev/null
+++ b/second/05_fragment/SampleActionBar1/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleActionBar1"
+include ':app'
diff --git a/second/05_fragment/SampleActionBar2/.gitignore b/second/05_fragment/SampleActionBar2/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.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/second/05_fragment/SampleActionBar2/.idea/.gitignore b/second/05_fragment/SampleActionBar2/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleActionBar2/.idea/compiler.xml b/second/05_fragment/SampleActionBar2/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/.idea/gradle.xml b/second/05_fragment/SampleActionBar2/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/.idea/jarRepositories.xml b/second/05_fragment/SampleActionBar2/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/.idea/misc.xml b/second/05_fragment/SampleActionBar2/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/.idea/runConfigurations.xml b/second/05_fragment/SampleActionBar2/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/.idea/vcs.xml b/second/05_fragment/SampleActionBar2/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/.gitignore b/second/05_fragment/SampleActionBar2/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/build.gradle b/second/05_fragment/SampleActionBar2/app/build.gradle
new file mode 100644
index 00000000..d37bced9
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.sampleactionbar2"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SampleActionBar2/app/proguard-rules.pro b/second/05_fragment/SampleActionBar2/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/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/second/05_fragment/SampleActionBar2/app/src/androidTest/java/com/example/sampleactionbar2/ExampleInstrumentedTest.java b/second/05_fragment/SampleActionBar2/app/src/androidTest/java/com/example/sampleactionbar2/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..004ab167
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/androidTest/java/com/example/sampleactionbar2/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.sampleactionbar2;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.sampleactionbar2", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleActionBar2/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..498de7d9
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/java/com/example/sampleactionbar2/MainActivity.java b/second/05_fragment/SampleActionBar2/app/src/main/java/com/example/sampleactionbar2/MainActivity.java
new file mode 100644
index 00000000..23bbd3c6
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/java/com/example/sampleactionbar2/MainActivity.java
@@ -0,0 +1,41 @@
+package com.example.sampleactionbar2;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+
+ View v = menu.findItem(R.id.menu_search).getActionView();
+ if (v != null) {
+ EditText editText = v.findViewById(R.id.editText);
+
+ if (editText != null) {
+ editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ Toast.makeText(getApplicationContext(), "입력됨.", Toast.LENGTH_LONG).show();
+ return true;
+ }
+ });
+ }
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/back.png b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/back.png
new file mode 100644
index 00000000..1b9df981
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/back.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/home.png b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/home.png
new file mode 100644
index 00000000..7f4fe6fe
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/home.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_refresh.png b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_refresh.png
new file mode 100644
index 00000000..6a3c7c86
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_refresh.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_search.png b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_search.png
new file mode 100644
index 00000000..3a7a7322
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_search.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_settings.png b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_settings.png
new file mode 100644
index 00000000..7f265284
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/drawable/menu_settings.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..4fc24441
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/layout/search_layout.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/layout/search_layout.xml
new file mode 100644
index 00000000..25b24beb
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/layout/search_layout.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/menu/menu_main.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 00000000..0217ea2e
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,22 @@
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..a68814ac
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/values/colors.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/values/strings.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..18c10490
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleActionBar2
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/main/res/values/themes.xml b/second/05_fragment/SampleActionBar2/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..95f43845
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/app/src/test/java/com/example/sampleactionbar2/ExampleUnitTest.java b/second/05_fragment/SampleActionBar2/app/src/test/java/com/example/sampleactionbar2/ExampleUnitTest.java
new file mode 100644
index 00000000..1a2aca45
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/app/src/test/java/com/example/sampleactionbar2/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.sampleactionbar2;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/build.gradle b/second/05_fragment/SampleActionBar2/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/gradle.properties b/second/05_fragment/SampleActionBar2/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleActionBar2/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleActionBar2/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleActionBar2/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleActionBar2/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleActionBar2/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..1a8391d7
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jul 27 15:02:21 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleActionBar2/gradlew b/second/05_fragment/SampleActionBar2/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleActionBar2/gradlew.bat b/second/05_fragment/SampleActionBar2/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleActionBar2/settings.gradle b/second/05_fragment/SampleActionBar2/settings.gradle
new file mode 100644
index 00000000..f8810e96
--- /dev/null
+++ b/second/05_fragment/SampleActionBar2/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleActionBar2"
+include ':app'
diff --git a/second/05_fragment/SampleFragment/.gitignore b/second/05_fragment/SampleFragment/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.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/second/05_fragment/SampleFragment/.idea/.gitignore b/second/05_fragment/SampleFragment/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleFragment/.idea/compiler.xml b/second/05_fragment/SampleFragment/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/.idea/gradle.xml b/second/05_fragment/SampleFragment/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/.idea/jarRepositories.xml b/second/05_fragment/SampleFragment/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/.idea/misc.xml b/second/05_fragment/SampleFragment/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/.idea/runConfigurations.xml b/second/05_fragment/SampleFragment/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/.idea/vcs.xml b/second/05_fragment/SampleFragment/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleFragment/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/.gitignore b/second/05_fragment/SampleFragment/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/build.gradle b/second/05_fragment/SampleFragment/app/build.gradle
new file mode 100644
index 00000000..cf459ad3
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/build.gradle
@@ -0,0 +1,40 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.samplefragment"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ 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/second/05_fragment/SampleFragment/app/proguard-rules.pro b/second/05_fragment/SampleFragment/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleFragment/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/second/05_fragment/SampleFragment/app/src/androidTest/java/com/example/samplefragment/ExampleInstrumentedTest.java b/second/05_fragment/SampleFragment/app/src/androidTest/java/com/example/samplefragment/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..2d9e4f43
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/androidTest/java/com/example/samplefragment/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.samplefragment;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.samplefragment", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleFragment/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..ddb56297
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MainActivity.java b/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MainActivity.java
new file mode 100644
index 00000000..2f53738b
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MainActivity.java
@@ -0,0 +1,27 @@
+package com.example.samplefragment;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class MainActivity extends AppCompatActivity {
+ MainFragment mainFragment;
+ MenuFragment menuFragment;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.mainFragment);
+ menuFragment = new MenuFragment();
+ }
+
+ public void onFragmentChanged(int index) {
+ if (index == 0) {
+ getSupportFragmentManager().beginTransaction().replace(R.id.container, menuFragment).commit();
+ } else if (index == 1) {
+ getSupportFragmentManager().beginTransaction().replace(R.id.container, mainFragment).commit();
+ }
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MainFragment.java b/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MainFragment.java
new file mode 100644
index 00000000..22f23c87
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MainFragment.java
@@ -0,0 +1,29 @@
+package com.example.samplefragment;
+
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+public class MainFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_main, container, false);
+
+ Button button = rootView.findViewById(R.id.button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ MainActivity activity = (MainActivity) getActivity();
+ activity.onFragmentChanged(0);
+ }
+ });
+ return rootView;
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MenuFragment.java b/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MenuFragment.java
new file mode 100644
index 00000000..1490cf70
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/java/com/example/samplefragment/MenuFragment.java
@@ -0,0 +1,17 @@
+package com.example.samplefragment;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class MenuFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_menu, container, false);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleFragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleFragment/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleFragment/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..5fc551a9
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/layout/fragment_main.xml b/second/05_fragment/SampleFragment/app/src/main/res/layout/fragment_main.xml
new file mode 100644
index 00000000..20052770
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/layout/fragment_main.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/layout/fragment_menu.xml b/second/05_fragment/SampleFragment/app/src/main/res/layout/fragment_menu.xml
new file mode 100644
index 00000000..6032560f
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/layout/fragment_menu.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleFragment/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleFragment/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..27a287bf
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/values/colors.xml b/second/05_fragment/SampleFragment/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/values/strings.xml b/second/05_fragment/SampleFragment/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..e21df315
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+
+ SampleFragment
+
+ Hello blank fragment
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/main/res/values/themes.xml b/second/05_fragment/SampleFragment/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..69c1120e
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/app/src/test/java/com/example/samplefragment/ExampleUnitTest.java b/second/05_fragment/SampleFragment/app/src/test/java/com/example/samplefragment/ExampleUnitTest.java
new file mode 100644
index 00000000..b8548eff
--- /dev/null
+++ b/second/05_fragment/SampleFragment/app/src/test/java/com/example/samplefragment/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.samplefragment;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/build.gradle b/second/05_fragment/SampleFragment/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleFragment/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/gradle.properties b/second/05_fragment/SampleFragment/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleFragment/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleFragment/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleFragment/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleFragment/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleFragment/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..4acff45d
--- /dev/null
+++ b/second/05_fragment/SampleFragment/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sun Jul 25 01:28:07 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleFragment/gradlew b/second/05_fragment/SampleFragment/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleFragment/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleFragment/gradlew.bat b/second/05_fragment/SampleFragment/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleFragment/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleFragment/settings.gradle b/second/05_fragment/SampleFragment/settings.gradle
new file mode 100644
index 00000000..9fa2030a
--- /dev/null
+++ b/second/05_fragment/SampleFragment/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleFragment"
+include ':app'
diff --git a/second/05_fragment/SampleFragment2/.gitignore b/second/05_fragment/SampleFragment2/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.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/second/05_fragment/SampleFragment2/.idea/.gitignore b/second/05_fragment/SampleFragment2/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleFragment2/.idea/compiler.xml b/second/05_fragment/SampleFragment2/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/.idea/gradle.xml b/second/05_fragment/SampleFragment2/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/.idea/jarRepositories.xml b/second/05_fragment/SampleFragment2/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/.idea/misc.xml b/second/05_fragment/SampleFragment2/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/.idea/runConfigurations.xml b/second/05_fragment/SampleFragment2/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/.idea/vcs.xml b/second/05_fragment/SampleFragment2/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/.gitignore b/second/05_fragment/SampleFragment2/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/build.gradle b/second/05_fragment/SampleFragment2/app/build.gradle
new file mode 100644
index 00000000..493652e2
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.samplefragment2"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SampleFragment2/app/proguard-rules.pro b/second/05_fragment/SampleFragment2/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/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/second/05_fragment/SampleFragment2/app/src/androidTest/java/com/example/samplefragment2/ExampleInstrumentedTest.java b/second/05_fragment/SampleFragment2/app/src/androidTest/java/com/example/samplefragment2/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..bd3397e9
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/androidTest/java/com/example/samplefragment2/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.samplefragment2;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.samplefragment2", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleFragment2/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..fb1fdd2e
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/ListFragment.java b/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/ListFragment.java
new file mode 100644
index 00000000..485311c0
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/ListFragment.java
@@ -0,0 +1,68 @@
+package com.example.samplefragment2;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
+public class ListFragment extends Fragment {
+
+ public static interface ImageSelectionCallback {
+ public void onImageSelected(int position);
+ }
+
+ public ImageSelectionCallback callback;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+
+ if (context instanceof ImageSelectionCallback) {
+ callback = (ImageSelectionCallback) context;
+ }
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list, container, false);
+ Button button = rootView.findViewById(R.id.button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (callback != null) {
+ callback.onImageSelected(0);
+ }
+ }
+ });
+
+ Button button2 = rootView.findViewById(R.id.button2);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (callback != null) {
+ callback.onImageSelected(1);
+ }
+ }
+ });
+
+ Button button3 = rootView.findViewById(R.id.button3);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (callback != null) {
+ callback.onImageSelected(2);
+ }
+ }
+ });
+
+ return rootView;
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/MainActivity.java b/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/MainActivity.java
new file mode 100644
index 00000000..47483610
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/MainActivity.java
@@ -0,0 +1,28 @@
+package com.example.samplefragment2;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentManager;
+
+import android.os.Bundle;
+
+public class MainActivity extends AppCompatActivity implements ListFragment.ImageSelectionCallback {
+ ListFragment listFragment;
+ ViewerFragment viewerFragment;
+
+ int[] images = {R.drawable.dream01, R.drawable.dream02, R.drawable.dream03};
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ FragmentManager manager = getSupportFragmentManager();
+ listFragment = (ListFragment) manager.findFragmentById(R.id.listFragment);
+ viewerFragment = (ViewerFragment) manager.findFragmentById(R.id.viewerFragment);
+ }
+
+ @Override
+ public void onImageSelected(int position) {
+ viewerFragment.setImage(images[position]);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/ViewerFragment.java b/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/ViewerFragment.java
new file mode 100644
index 00000000..430b94fb
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/java/com/example/samplefragment2/ViewerFragment.java
@@ -0,0 +1,29 @@
+package com.example.samplefragment2;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
+public class ViewerFragment extends Fragment {
+ ImageView imageView;
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_viewer, container, false);
+ imageView = rootView.findViewById(R.id.imageView);
+
+ return rootView;
+ }
+
+ public void setImage(int resId) {
+ imageView.setImageResource(resId);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream01.png b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream01.png
new file mode 100644
index 00000000..e80d8ef1
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream01.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream02.png b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream02.png
new file mode 100644
index 00000000..f8ba69bf
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream02.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream03.png b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream03.png
new file mode 100644
index 00000000..e04e581e
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/dream03.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleFragment2/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleFragment2/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..e4fe38dc
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/layout/fragment_list.xml b/second/05_fragment/SampleFragment2/app/src/main/res/layout/fragment_list.xml
new file mode 100644
index 00000000..ac8e959b
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/layout/fragment_list.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/layout/fragment_viewer.xml b/second/05_fragment/SampleFragment2/app/src/main/res/layout/fragment_viewer.xml
new file mode 100644
index 00000000..bf788bda
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/layout/fragment_viewer.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleFragment2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleFragment2/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..cb03f49e
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/values/colors.xml b/second/05_fragment/SampleFragment2/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/values/strings.xml b/second/05_fragment/SampleFragment2/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..56b1f96e
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleFragment2
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/main/res/values/themes.xml b/second/05_fragment/SampleFragment2/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..e47100fb
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/app/src/test/java/com/example/samplefragment2/ExampleUnitTest.java b/second/05_fragment/SampleFragment2/app/src/test/java/com/example/samplefragment2/ExampleUnitTest.java
new file mode 100644
index 00000000..ede019f0
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/app/src/test/java/com/example/samplefragment2/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.samplefragment2;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/build.gradle b/second/05_fragment/SampleFragment2/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/gradle.properties b/second/05_fragment/SampleFragment2/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleFragment2/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleFragment2/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleFragment2/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleFragment2/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleFragment2/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..a5c81e4d
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Jul 26 19:56:26 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleFragment2/gradlew b/second/05_fragment/SampleFragment2/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleFragment2/gradlew.bat b/second/05_fragment/SampleFragment2/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleFragment2/settings.gradle b/second/05_fragment/SampleFragment2/settings.gradle
new file mode 100644
index 00000000..93c2e547
--- /dev/null
+++ b/second/05_fragment/SampleFragment2/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleFragment2"
+include ':app'
diff --git a/second/05_fragment/SampleOptionMenu/.gitignore b/second/05_fragment/SampleOptionMenu/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.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/second/05_fragment/SampleOptionMenu/.idea/.gitignore b/second/05_fragment/SampleOptionMenu/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleOptionMenu/.idea/compiler.xml b/second/05_fragment/SampleOptionMenu/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/.idea/gradle.xml b/second/05_fragment/SampleOptionMenu/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/.idea/jarRepositories.xml b/second/05_fragment/SampleOptionMenu/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/.idea/misc.xml b/second/05_fragment/SampleOptionMenu/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/.idea/runConfigurations.xml b/second/05_fragment/SampleOptionMenu/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/.idea/vcs.xml b/second/05_fragment/SampleOptionMenu/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/.gitignore b/second/05_fragment/SampleOptionMenu/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/build.gradle b/second/05_fragment/SampleOptionMenu/app/build.gradle
new file mode 100644
index 00000000..1c8a68ec
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.optionmenu"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SampleOptionMenu/app/proguard-rules.pro b/second/05_fragment/SampleOptionMenu/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/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/second/05_fragment/SampleOptionMenu/app/src/androidTest/java/com/example/optionmenu/ExampleInstrumentedTest.java b/second/05_fragment/SampleOptionMenu/app/src/androidTest/java/com/example/optionmenu/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..9b00b7f2
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/androidTest/java/com/example/optionmenu/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.optionmenu;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.optionmenu", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleOptionMenu/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..7f3487ce
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/java/com/example/optionmenu/MainActivity.java b/second/05_fragment/SampleOptionMenu/app/src/main/java/com/example/optionmenu/MainActivity.java
new file mode 100644
index 00000000..b011e046
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/java/com/example/optionmenu/MainActivity.java
@@ -0,0 +1,45 @@
+package com.example.optionmenu;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.Button;
+import android.widget.Toast;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ int curId = item.getItemId();
+ switch (curId) {
+ case R.id.menu_refresh:
+ Toast.makeText(this, "새로고침 메뉴가 선택되었습니다. ", Toast.LENGTH_SHORT).show();
+ break;
+ case R.id.menu_search:
+ Toast.makeText(this, "검색 메뉴가 선택되었습니다. ", Toast.LENGTH_SHORT).show();
+ break;
+ case R.id.menu_settings:
+ Toast.makeText(this, "설정 메뉴가 선택되었습니다. ", Toast.LENGTH_SHORT).show();
+ break;
+ default:
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_refresh.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_refresh.png
new file mode 100644
index 00000000..6a3c7c86
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_refresh.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_search.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_search.png
new file mode 100644
index 00000000..3a7a7322
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_search.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_settings.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_settings.png
new file mode 100644
index 00000000..7f265284
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable-v24/menu_settings.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..c21bda6c
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/menu/menu_main.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 00000000..5d622383
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..0121df5e
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/values/colors.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/values/strings.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..35592dfd
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleOptionMenu
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/main/res/values/themes.xml b/second/05_fragment/SampleOptionMenu/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..81fc04a3
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/app/src/test/java/com/example/optionmenu/ExampleUnitTest.java b/second/05_fragment/SampleOptionMenu/app/src/test/java/com/example/optionmenu/ExampleUnitTest.java
new file mode 100644
index 00000000..afdaa604
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/app/src/test/java/com/example/optionmenu/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.optionmenu;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/build.gradle b/second/05_fragment/SampleOptionMenu/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/gradle.properties b/second/05_fragment/SampleOptionMenu/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleOptionMenu/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleOptionMenu/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleOptionMenu/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleOptionMenu/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleOptionMenu/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..67ca7954
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Jul 26 21:00:32 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleOptionMenu/gradlew b/second/05_fragment/SampleOptionMenu/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleOptionMenu/gradlew.bat b/second/05_fragment/SampleOptionMenu/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleOptionMenu/settings.gradle b/second/05_fragment/SampleOptionMenu/settings.gradle
new file mode 100644
index 00000000..32045709
--- /dev/null
+++ b/second/05_fragment/SampleOptionMenu/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleOptionMenu"
+include ':app'
diff --git a/second/05_fragment/SamplePager/.gitignore b/second/05_fragment/SamplePager/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SamplePager/.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/second/05_fragment/SamplePager/.idea/.gitignore b/second/05_fragment/SamplePager/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SamplePager/.idea/compiler.xml b/second/05_fragment/SamplePager/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/.idea/gradle.xml b/second/05_fragment/SamplePager/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/.idea/jarRepositories.xml b/second/05_fragment/SamplePager/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/.idea/misc.xml b/second/05_fragment/SamplePager/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/.idea/runConfigurations.xml b/second/05_fragment/SamplePager/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/.idea/vcs.xml b/second/05_fragment/SamplePager/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SamplePager/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/.gitignore b/second/05_fragment/SamplePager/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/build.gradle b/second/05_fragment/SamplePager/app/build.gradle
new file mode 100644
index 00000000..41b4029b
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.samplepager"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SamplePager/app/proguard-rules.pro b/second/05_fragment/SamplePager/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SamplePager/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/second/05_fragment/SamplePager/app/src/androidTest/java/com/example/samplepager/ExampleInstrumentedTest.java b/second/05_fragment/SamplePager/app/src/androidTest/java/com/example/samplepager/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..da7346a7
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/androidTest/java/com/example/samplepager/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.samplepager;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.samplepager", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/AndroidManifest.xml b/second/05_fragment/SamplePager/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..30d78118
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment1.java b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment1.java
new file mode 100644
index 00000000..f413bc34
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment1.java
@@ -0,0 +1,15 @@
+package com.example.samplepager;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment1 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment1, container, false);
+ }
+}
diff --git a/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment2.java b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment2.java
new file mode 100644
index 00000000..d5ea4364
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment2.java
@@ -0,0 +1,15 @@
+package com.example.samplepager;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment2 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment2, container, false);
+ }
+}
diff --git a/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment3.java b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment3.java
new file mode 100644
index 00000000..0d29e8c9
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/Fragment3.java
@@ -0,0 +1,15 @@
+package com.example.samplepager;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment3 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment3, container, false);
+ }
+}
diff --git a/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/MainActivity.java b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/MainActivity.java
new file mode 100644
index 00000000..759260fe
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/java/com/example/samplepager/MainActivity.java
@@ -0,0 +1,69 @@
+package com.example.samplepager;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import java.util.ArrayList;
+
+public class MainActivity extends AppCompatActivity {
+ ViewPager pager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ Button button = findViewById(R.id.button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ pager.setCurrentItem(1);
+ }
+ });
+
+ pager = findViewById(R.id.pager);
+ pager.setOffscreenPageLimit(3);
+
+ MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
+
+ Fragment1 fragment1 = new Fragment1();
+ adapter.addItem(fragment1);
+
+ Fragment2 fragment2 = new Fragment2();
+ adapter.addItem(fragment2);
+
+ Fragment3 fragment3 = new Fragment3();
+ adapter.addItem(fragment3);
+
+ pager.setAdapter(adapter);
+ }
+
+ class MyPagerAdapter extends FragmentStatePagerAdapter {
+ ArrayList items = new ArrayList();
+ public MyPagerAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ public void addItem(Fragment item) {
+ items.add(item);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ return items.get(position);
+ }
+
+ @Override
+ public int getCount() {
+ return items.size();
+ }
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SamplePager/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SamplePager/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SamplePager/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SamplePager/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..da1bf08e
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/layout/fragment1.xml b/second/05_fragment/SamplePager/app/src/main/res/layout/fragment1.xml
new file mode 100644
index 00000000..e1dff3ee
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/layout/fragment1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/layout/fragment2.xml b/second/05_fragment/SamplePager/app/src/main/res/layout/fragment2.xml
new file mode 100644
index 00000000..e9b14e60
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/layout/fragment2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/layout/fragment3.xml b/second/05_fragment/SamplePager/app/src/main/res/layout/fragment3.xml
new file mode 100644
index 00000000..504160bb
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/layout/fragment3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SamplePager/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SamplePager/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SamplePager/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SamplePager/app/src/main/res/values-night/themes.xml b/second/05_fragment/SamplePager/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..496d8904
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/values/colors.xml b/second/05_fragment/SamplePager/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/values/strings.xml b/second/05_fragment/SamplePager/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..24325de2
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SamplePager
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/main/res/values/themes.xml b/second/05_fragment/SamplePager/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..0f8742fb
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/app/src/test/java/com/example/samplepager/ExampleUnitTest.java b/second/05_fragment/SamplePager/app/src/test/java/com/example/samplepager/ExampleUnitTest.java
new file mode 100644
index 00000000..c6764b88
--- /dev/null
+++ b/second/05_fragment/SamplePager/app/src/test/java/com/example/samplepager/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.samplepager;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/build.gradle b/second/05_fragment/SamplePager/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SamplePager/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/gradle.properties b/second/05_fragment/SamplePager/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SamplePager/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SamplePager/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SamplePager/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SamplePager/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SamplePager/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SamplePager/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..fcbd12f5
--- /dev/null
+++ b/second/05_fragment/SamplePager/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Jul 28 14:48:36 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SamplePager/gradlew b/second/05_fragment/SamplePager/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SamplePager/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SamplePager/gradlew.bat b/second/05_fragment/SamplePager/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SamplePager/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SamplePager/settings.gradle b/second/05_fragment/SamplePager/settings.gradle
new file mode 100644
index 00000000..dd02d269
--- /dev/null
+++ b/second/05_fragment/SamplePager/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SamplePager"
+include ':app'
diff --git a/second/05_fragment/SampleTab/.gitignore b/second/05_fragment/SampleTab/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleTab/.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/second/05_fragment/SampleTab/.idea/.gitignore b/second/05_fragment/SampleTab/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleTab/.idea/compiler.xml b/second/05_fragment/SampleTab/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/.idea/gradle.xml b/second/05_fragment/SampleTab/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/.idea/jarRepositories.xml b/second/05_fragment/SampleTab/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/.idea/misc.xml b/second/05_fragment/SampleTab/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/.idea/runConfigurations.xml b/second/05_fragment/SampleTab/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/.idea/vcs.xml b/second/05_fragment/SampleTab/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleTab/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/.gitignore b/second/05_fragment/SampleTab/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/build.gradle b/second/05_fragment/SampleTab/app/build.gradle
new file mode 100644
index 00000000..ba94900d
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.tab"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SampleTab/app/proguard-rules.pro b/second/05_fragment/SampleTab/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleTab/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/second/05_fragment/SampleTab/app/src/androidTest/java/com/example/tab/ExampleInstrumentedTest.java b/second/05_fragment/SampleTab/app/src/androidTest/java/com/example/tab/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..dd13e7ae
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/androidTest/java/com/example/tab/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.tab;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.tab", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleTab/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..8e1641ea
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment1.java b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment1.java
new file mode 100644
index 00000000..aee85917
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment1.java
@@ -0,0 +1,17 @@
+package com.example.tab;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+public class Fragment1 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment1, container, false);
+ }
+}
diff --git a/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment2.java b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment2.java
new file mode 100644
index 00000000..6eaf8cf3
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment2.java
@@ -0,0 +1,15 @@
+package com.example.tab;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment2 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment2, container, false);
+ }
+}
diff --git a/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment3.java b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment3.java
new file mode 100644
index 00000000..99da7083
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/Fragment3.java
@@ -0,0 +1,15 @@
+package com.example.tab;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment3 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment3, container, false);
+ }
+}
diff --git a/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/MainActivity.java b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/MainActivity.java
new file mode 100644
index 00000000..318aed20
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/java/com/example/tab/MainActivity.java
@@ -0,0 +1,70 @@
+package com.example.tab;
+
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.fragment.app.Fragment;
+
+import android.os.Bundle;
+import android.util.Log;
+
+import com.google.android.material.tabs.TabLayout;
+
+public class MainActivity extends AppCompatActivity {
+ Toolbar toolbar;
+
+ Fragment1 fragment1;
+ Fragment2 fragment2;
+ Fragment3 fragment3;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ toolbar = findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setDisplayShowTitleEnabled(false);
+
+ fragment1 = new Fragment1();
+ fragment2 = new Fragment2();
+ fragment3 = new Fragment3();
+
+ getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment1).commit();
+
+ TabLayout tabs = findViewById(R.id.tabs);
+ tabs.addTab(tabs.newTab().setText("통화기록"));
+ tabs.addTab(tabs.newTab().setText("스팸기록"));
+ tabs.addTab(tabs.newTab().setText("연락처"));
+
+ tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ int position = tab.getPosition();
+ Log.d("MainActivity", "선택된 탭: " + position);
+ Fragment selected = null;
+ if (position == 0) {
+ selected = fragment1;
+ } else if (position == 1) {
+ selected = fragment2;
+ } else if (position == 2) {
+ selected = fragment3;
+ }
+
+ getSupportFragmentManager().beginTransaction().replace(R.id.container, selected).commit();
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleTab/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleTab/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleTab/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleTab/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..44235254
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/layout/fragment1.xml b/second/05_fragment/SampleTab/app/src/main/res/layout/fragment1.xml
new file mode 100644
index 00000000..e1dff3ee
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/layout/fragment1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/layout/fragment2.xml b/second/05_fragment/SampleTab/app/src/main/res/layout/fragment2.xml
new file mode 100644
index 00000000..e9b14e60
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/layout/fragment2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/layout/fragment3.xml b/second/05_fragment/SampleTab/app/src/main/res/layout/fragment3.xml
new file mode 100644
index 00000000..504160bb
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/layout/fragment3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleTab/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleTab/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleTab/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleTab/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..04351cbe
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/values/colors.xml b/second/05_fragment/SampleTab/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/values/strings.xml b/second/05_fragment/SampleTab/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..dfeaf515
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleTab
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/main/res/values/themes.xml b/second/05_fragment/SampleTab/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..684f6682
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/app/src/test/java/com/example/tab/ExampleUnitTest.java b/second/05_fragment/SampleTab/app/src/test/java/com/example/tab/ExampleUnitTest.java
new file mode 100644
index 00000000..f904e19d
--- /dev/null
+++ b/second/05_fragment/SampleTab/app/src/test/java/com/example/tab/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.tab;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/build.gradle b/second/05_fragment/SampleTab/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleTab/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/gradle.properties b/second/05_fragment/SampleTab/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleTab/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleTab/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleTab/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleTab/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleTab/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..2e04409a
--- /dev/null
+++ b/second/05_fragment/SampleTab/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jul 27 15:54:09 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleTab/gradlew b/second/05_fragment/SampleTab/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleTab/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleTab/gradlew.bat b/second/05_fragment/SampleTab/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleTab/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleTab/settings.gradle b/second/05_fragment/SampleTab/settings.gradle
new file mode 100644
index 00000000..db2f0548
--- /dev/null
+++ b/second/05_fragment/SampleTab/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleTab"
+include ':app'
diff --git a/second/05_fragment/SampleTab2/.gitignore b/second/05_fragment/SampleTab2/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.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/second/05_fragment/SampleTab2/.idea/.gitignore b/second/05_fragment/SampleTab2/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/05_fragment/SampleTab2/.idea/compiler.xml b/second/05_fragment/SampleTab2/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/.idea/gradle.xml b/second/05_fragment/SampleTab2/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/.idea/jarRepositories.xml b/second/05_fragment/SampleTab2/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/.idea/misc.xml b/second/05_fragment/SampleTab2/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/.idea/runConfigurations.xml b/second/05_fragment/SampleTab2/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/.idea/vcs.xml b/second/05_fragment/SampleTab2/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/05_fragment/SampleTab2/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/.gitignore b/second/05_fragment/SampleTab2/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/build.gradle b/second/05_fragment/SampleTab2/app/build.gradle
new file mode 100644
index 00000000..d76f4bd1
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.tab2"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ 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/second/05_fragment/SampleTab2/app/proguard-rules.pro b/second/05_fragment/SampleTab2/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/05_fragment/SampleTab2/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/second/05_fragment/SampleTab2/app/src/androidTest/java/com/example/tab2/ExampleInstrumentedTest.java b/second/05_fragment/SampleTab2/app/src/androidTest/java/com/example/tab2/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..29ed50d5
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/androidTest/java/com/example/tab2/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.tab2;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.tab2", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/AndroidManifest.xml b/second/05_fragment/SampleTab2/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..7600b81c
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment1.java b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment1.java
new file mode 100644
index 00000000..0c6fc561
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment1.java
@@ -0,0 +1,15 @@
+package com.example.tab2;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment1 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment1, container, false);
+ }
+}
diff --git a/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment2.java b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment2.java
new file mode 100644
index 00000000..73b61f53
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment2.java
@@ -0,0 +1,15 @@
+package com.example.tab2;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment2 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment2, container, false);
+ }
+}
diff --git a/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment3.java b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment3.java
new file mode 100644
index 00000000..e2c87451
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/Fragment3.java
@@ -0,0 +1,15 @@
+package com.example.tab2;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment3 extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment3, container, false);
+ }
+}
diff --git a/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/MainActivity.java b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/MainActivity.java
new file mode 100644
index 00000000..60c8771f
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/java/com/example/tab2/MainActivity.java
@@ -0,0 +1,57 @@
+package com.example.tab2;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.view.MenuItem;
+import android.widget.Toast;
+
+import com.google.android.material.bottomnavigation.BottomNavigationView;
+
+public class MainActivity extends AppCompatActivity {
+ Fragment1 fragment1;
+ Fragment2 fragment2;
+ Fragment3 fragment3;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ fragment1 = new Fragment1();
+ fragment2 = new Fragment2();
+ fragment3 = new Fragment3();
+
+ getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment1).commit();
+
+ BottomNavigationView bottomNavigation = findViewById(R.id.bottom_navigation);
+ bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.tab1:
+ Toast.makeText(getApplicationContext(), "첫 번째 탭 선택됨", Toast.LENGTH_LONG).show();
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.container, fragment1).commit();
+
+ return true;
+ case R.id.tab2:
+ Toast.makeText(getApplicationContext(), "두 번째 탭 선택됨", Toast.LENGTH_LONG).show();
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.container, fragment2).commit();
+
+ return true;
+ case R.id.tab3:
+ Toast.makeText(getApplicationContext(), "세 번째 탭 선택됨", Toast.LENGTH_LONG).show();
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.container, fragment3).commit();
+
+ return true;
+ }
+
+ return false;
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/05_fragment/SampleTab2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/drawable/color.xml b/second/05_fragment/SampleTab2/app/src/main/res/drawable/color.xml
new file mode 100644
index 00000000..43171baf
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/drawable/color.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/drawable/ic_launcher_background.xml b/second/05_fragment/SampleTab2/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/layout/activity_main.xml b/second/05_fragment/SampleTab2/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..ef7fe456
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment1.xml b/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment1.xml
new file mode 100644
index 00000000..e1dff3ee
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment2.xml b/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment2.xml
new file mode 100644
index 00000000..e9b14e60
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment3.xml b/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment3.xml
new file mode 100644
index 00000000..504160bb
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/layout/fragment3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/menu/menu_bottom.xml b/second/05_fragment/SampleTab2/app/src/main/res/menu/menu_bottom.xml
new file mode 100644
index 00000000..063f63cc
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/menu/menu_bottom.xml
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/05_fragment/SampleTab2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/values-night/themes.xml b/second/05_fragment/SampleTab2/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..be20508a
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/values/colors.xml b/second/05_fragment/SampleTab2/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/values/refs.xml b/second/05_fragment/SampleTab2/app/src/main/res/values/refs.xml
new file mode 100644
index 00000000..45dd02bb
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/values/refs.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/values/strings.xml b/second/05_fragment/SampleTab2/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..c53aaf44
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleTab2
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/main/res/values/themes.xml b/second/05_fragment/SampleTab2/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..e006cc59
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/app/src/test/java/com/example/tab2/ExampleUnitTest.java b/second/05_fragment/SampleTab2/app/src/test/java/com/example/tab2/ExampleUnitTest.java
new file mode 100644
index 00000000..6b9c469d
--- /dev/null
+++ b/second/05_fragment/SampleTab2/app/src/test/java/com/example/tab2/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.tab2;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/build.gradle b/second/05_fragment/SampleTab2/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/05_fragment/SampleTab2/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/gradle.properties b/second/05_fragment/SampleTab2/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/05_fragment/SampleTab2/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/05_fragment/SampleTab2/gradle/wrapper/gradle-wrapper.jar b/second/05_fragment/SampleTab2/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/05_fragment/SampleTab2/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/05_fragment/SampleTab2/gradle/wrapper/gradle-wrapper.properties b/second/05_fragment/SampleTab2/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..1d36d7c8
--- /dev/null
+++ b/second/05_fragment/SampleTab2/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jul 27 16:24:17 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/05_fragment/SampleTab2/gradlew b/second/05_fragment/SampleTab2/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/05_fragment/SampleTab2/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/05_fragment/SampleTab2/gradlew.bat b/second/05_fragment/SampleTab2/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/05_fragment/SampleTab2/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/05_fragment/SampleTab2/settings.gradle b/second/05_fragment/SampleTab2/settings.gradle
new file mode 100644
index 00000000..ea18996e
--- /dev/null
+++ b/second/05_fragment/SampleTab2/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleTab2"
+include ':app'
diff --git a/second/07_select/.DS_Store b/second/07_select/.DS_Store
new file mode 100644
index 00000000..c14e970b
Binary files /dev/null and b/second/07_select/.DS_Store differ
diff --git a/second/07_select/Mission/.DS_Store b/second/07_select/Mission/.DS_Store
new file mode 100644
index 00000000..dee456b3
Binary files /dev/null and b/second/07_select/Mission/.DS_Store differ
diff --git a/second/07_select/Mission/Mission13/.gitignore b/second/07_select/Mission/Mission13/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.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/second/07_select/Mission/Mission13/.idea/.gitignore b/second/07_select/Mission/Mission13/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/Mission/Mission13/.idea/compiler.xml b/second/07_select/Mission/Mission13/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/.idea/gradle.xml b/second/07_select/Mission/Mission13/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/.idea/jarRepositories.xml b/second/07_select/Mission/Mission13/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/.idea/misc.xml b/second/07_select/Mission/Mission13/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/.idea/runConfigurations.xml b/second/07_select/Mission/Mission13/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/.idea/vcs.xml b/second/07_select/Mission/Mission13/.idea/vcs.xml
new file mode 100644
index 00000000..4fce1d86
--- /dev/null
+++ b/second/07_select/Mission/Mission13/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/.gitignore b/second/07_select/Mission/Mission13/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/build.gradle b/second/07_select/Mission/Mission13/app/build.gradle
new file mode 100644
index 00000000..444eca18
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.mission13"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/Mission/Mission13/app/proguard-rules.pro b/second/07_select/Mission/Mission13/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/Mission/Mission13/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/second/07_select/Mission/Mission13/app/src/androidTest/java/com/example/mission13/ExampleInstrumentedTest.java b/second/07_select/Mission/Mission13/app/src/androidTest/java/com/example/mission13/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..35312001
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/androidTest/java/com/example/mission13/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.mission13;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.mission13", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/AndroidManifest.xml b/second/07_select/Mission/Mission13/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..feb52ce6
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/Customer.java b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/Customer.java
new file mode 100644
index 00000000..78e78c41
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/Customer.java
@@ -0,0 +1,53 @@
+package com.example.mission13;
+
+public class Customer {
+ String name;
+ String birth;
+ String mobile;
+ int resId;
+
+ public Customer(String name, String birth, String mobile) {
+ this.name = name;
+ this.birth = birth;
+ this.mobile = mobile;
+ }
+
+ public Customer(String name, String birth, String mobile, int resId) {
+ this.name = name;
+ this.birth = birth;
+ this.mobile = mobile;
+ this.resId = resId;
+ }
+
+ public String getBirth() {
+ return birth;
+ }
+
+ public void setBirth(String birth) {
+ this.birth = birth;
+ }
+
+ public int getResId() {
+ return resId;
+ }
+
+ public void setResId(int resId) {
+ this.resId = resId;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/CustomerAdapter.java b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/CustomerAdapter.java
new file mode 100644
index 00000000..9c37ad8b
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/CustomerAdapter.java
@@ -0,0 +1,99 @@
+package com.example.mission13;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+public class CustomerAdapter extends RecyclerView.Adapter
+ implements OnCustomerItemClickListener {
+ ArrayList items = new ArrayList();
+
+ OnCustomerItemClickListener listener;
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
+ LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
+ View itemView = inflater.inflate(R.layout.customer_item, viewGroup, false);
+
+ return new ViewHolder(itemView, this);
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder viewHolder, int position) {
+ Customer item = items.get(position);
+ viewHolder.setItem(item);
+ }
+
+ @Override
+ public int getItemCount() {
+ return items.size();
+ }
+
+ public void addItem(Customer item) {
+ items.add(item);
+ }
+
+ public void setItems(ArrayList items) {
+ this.items = items;
+ }
+
+ public Customer getItem(int position) {
+ return items.get(position);
+ }
+
+ public void setItem(int position, Customer item) {
+ items.set(position, item);
+ }
+
+ public void setOnItemClickListener(OnCustomerItemClickListener listener) {
+ this.listener = listener;
+ }
+
+ @Override
+ public void onItemClick(ViewHolder holder, View view, int position) {
+ if (listener != null) {
+ listener.onItemClick(holder, view, position);
+ }
+ }
+
+ static class ViewHolder extends RecyclerView.ViewHolder {
+ TextView textView;
+ TextView textView2;
+ TextView textView3;
+ ImageView imageView;
+
+ public ViewHolder(View itemView, final OnCustomerItemClickListener listener) {
+ super(itemView);
+
+ textView = itemView.findViewById(R.id.textView);
+ textView2 = itemView.findViewById(R.id.textView2);
+ textView3 = itemView.findViewById(R.id.textView3);
+ imageView = itemView.findViewById(R.id.imageView);
+
+ itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ int position = getAdapterPosition();
+
+ if (listener != null) {
+ listener.onItemClick(ViewHolder.this, view, position);
+ }
+ }
+ });
+ }
+
+ public void setItem(Customer item) {
+ textView.setText(item.getName());
+ textView2.setText(item.getBirth());
+ textView3.setText(item.getMobile());
+ imageView.setImageResource(item.getResId());
+ }
+
+ }
+}
diff --git a/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/MainActivity.java b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/MainActivity.java
new file mode 100644
index 00000000..7f628dde
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/MainActivity.java
@@ -0,0 +1,75 @@
+package com.example.mission13;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CursorAdapter;
+import android.widget.EditText;
+import android.widget.TextClock;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class MainActivity extends AppCompatActivity {
+ EditText editText;
+ EditText editText2;
+ EditText editText3;
+
+ TextView textView;
+
+ RecyclerView recyclerView;
+
+ CustomerAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ editText = findViewById(R.id.nameInput);
+ editText2 = findViewById(R.id.dateInput);
+ editText3 = findViewById(R.id.numberInput);
+
+ textView = findViewById(R.id.textView);
+ textView.setText("2 명");
+
+ recyclerView = findViewById(R.id.recyclerView);
+
+ LinearLayoutManager layoutManager = new LinearLayoutManager(this);
+ recyclerView.setLayoutManager(layoutManager);
+
+ adapter = new CustomerAdapter();
+
+ adapter.addItem(new Customer("김준수", "1995-10-20", "010-1000-1000", R.drawable.customer));
+ adapter.addItem(new Customer("이희연", "1994-02-13", "010-2000-2000", R.drawable.customer));
+
+ recyclerView.setAdapter(adapter);
+
+ adapter.setOnItemClickListener(new OnCustomerItemClickListener() {
+ @Override
+ public void onItemClick(CustomerAdapter.ViewHolder holder, View view, int position) {
+ Customer item = adapter.getItem(position);
+
+ Toast.makeText(getApplicationContext(), "아이템 선택됨 : " + item.getName(), Toast.LENGTH_LONG).show();
+ }
+ });
+
+ Button button = findViewById(R.id.button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ String name = editText.getText().toString();
+ String birth = editText2.getText().toString();
+ String mobile = editText3.getText().toString();
+
+ adapter.addItem(new Customer(name, birth, mobile, R.drawable.customer));
+ adapter.notifyDataSetChanged();
+
+ textView.setText(adapter.getItemCount() + " 명");
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/OnCustomerItemClickListener.java b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/OnCustomerItemClickListener.java
new file mode 100644
index 00000000..a21973c3
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/java/com/example/mission13/OnCustomerItemClickListener.java
@@ -0,0 +1,7 @@
+package com.example.mission13;
+
+import android.view.View;
+
+public interface OnCustomerItemClickListener {
+ public void onItemClick(CustomerAdapter.ViewHolder holder, View view, int position);
+}
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/drawable-v24/customer.png b/second/07_select/Mission/Mission13/app/src/main/res/drawable-v24/customer.png
new file mode 100644
index 00000000..ade752ea
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/drawable-v24/customer.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/Mission/Mission13/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/Mission/Mission13/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/layout/activity_main.xml b/second/07_select/Mission/Mission13/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..5f02c287
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/layout/customer_item.xml b/second/07_select/Mission/Mission13/app/src/main/res/layout/customer_item.xml
new file mode 100644
index 00000000..cae75db8
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/layout/customer_item.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/Mission/Mission13/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/values-night/themes.xml b/second/07_select/Mission/Mission13/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..419ecb3c
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/values/colors.xml b/second/07_select/Mission/Mission13/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/values/strings.xml b/second/07_select/Mission/Mission13/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..e9bff831
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Mission13
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/main/res/values/themes.xml b/second/07_select/Mission/Mission13/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..130b8cad
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/app/src/test/java/com/example/mission13/ExampleUnitTest.java b/second/07_select/Mission/Mission13/app/src/test/java/com/example/mission13/ExampleUnitTest.java
new file mode 100644
index 00000000..a8e97707
--- /dev/null
+++ b/second/07_select/Mission/Mission13/app/src/test/java/com/example/mission13/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.mission13;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/build.gradle b/second/07_select/Mission/Mission13/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/Mission/Mission13/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/gradle.properties b/second/07_select/Mission/Mission13/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/Mission/Mission13/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission13/gradle/wrapper/gradle-wrapper.jar b/second/07_select/Mission/Mission13/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/Mission/Mission13/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/Mission/Mission13/gradle/wrapper/gradle-wrapper.properties b/second/07_select/Mission/Mission13/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..18ece11d
--- /dev/null
+++ b/second/07_select/Mission/Mission13/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Aug 28 09:46:05 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/Mission/Mission13/gradlew b/second/07_select/Mission/Mission13/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/Mission/Mission13/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/Mission/Mission13/gradlew.bat b/second/07_select/Mission/Mission13/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/Mission/Mission13/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/Mission/Mission13/settings.gradle b/second/07_select/Mission/Mission13/settings.gradle
new file mode 100644
index 00000000..834dd245
--- /dev/null
+++ b/second/07_select/Mission/Mission13/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "Mission13"
+include ':app'
diff --git a/second/07_select/Mission/Mission14/.gitignore b/second/07_select/Mission/Mission14/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.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/second/07_select/Mission/Mission14/.idea/.gitignore b/second/07_select/Mission/Mission14/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/Mission/Mission14/.idea/compiler.xml b/second/07_select/Mission/Mission14/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/.idea/gradle.xml b/second/07_select/Mission/Mission14/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/.idea/jarRepositories.xml b/second/07_select/Mission/Mission14/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/.idea/misc.xml b/second/07_select/Mission/Mission14/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/.idea/runConfigurations.xml b/second/07_select/Mission/Mission14/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/.idea/vcs.xml b/second/07_select/Mission/Mission14/.idea/vcs.xml
new file mode 100644
index 00000000..4fce1d86
--- /dev/null
+++ b/second/07_select/Mission/Mission14/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/.gitignore b/second/07_select/Mission/Mission14/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/build.gradle b/second/07_select/Mission/Mission14/app/build.gradle
new file mode 100644
index 00000000..23784024
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.mission14"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/Mission/Mission14/app/proguard-rules.pro b/second/07_select/Mission/Mission14/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/Mission/Mission14/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/second/07_select/Mission/Mission14/app/src/androidTest/java/com/example/mission14/ExampleInstrumentedTest.java b/second/07_select/Mission/Mission14/app/src/androidTest/java/com/example/mission14/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..775adde9
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/androidTest/java/com/example/mission14/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.mission14;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.mission14", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/AndroidManifest.xml b/second/07_select/Mission/Mission14/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..8f0349af
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/MainActivity.java b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/MainActivity.java
new file mode 100644
index 00000000..e3c15b15
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/MainActivity.java
@@ -0,0 +1,44 @@
+package com.example.mission14;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Toast;
+
+public class MainActivity extends AppCompatActivity {
+ RecyclerView recyclerView;
+ ProductAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ recyclerView = findViewById(R.id.recyclerView);
+
+ GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
+ recyclerView.setLayoutManager(layoutManager);
+
+
+ adapter = new ProductAdapter();
+
+ adapter.addItem(new Product("토끼털 코트", "리본", 7, 574770, R.drawable.clothes1));
+ adapter.addItem(new Product("어깨 패치 H라인 원피스", "헤지스레이디스", 19, 297580, R.drawable.clothes2));
+ adapter.addItem(new Product("그린체크 패턴 소매배색 긴팔 남방", "헤지스레이디스", 16, 144500, R.drawable.clothes3));
+ adapter.addItem(new Product("네이비 마드라스 체크 퍼피 남방", "헤지스레이디스", 16, 170150, R.drawable.clothes4));
+
+ recyclerView.setAdapter(adapter);
+
+ adapter.setOnItemClickListener(new OnProductItemClickListener() {
+ @Override
+ public void onItemClick(ProductAdapter.ViewHolder holder, View view, int position) {
+ Product item = adapter.getItem(position);
+ Toast.makeText(getApplicationContext(), "선택된 제품 : " + item.getName(), Toast.LENGTH_LONG).show();
+
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/OnProductItemClickListener.java b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/OnProductItemClickListener.java
new file mode 100644
index 00000000..7d7fd76a
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/OnProductItemClickListener.java
@@ -0,0 +1,7 @@
+package com.example.mission14;
+
+import android.view.View;
+
+public interface OnProductItemClickListener {
+ public void onItemClick(ProductAdapter.ViewHolder holder, View view, int position);
+}
diff --git a/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/Product.java b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/Product.java
new file mode 100644
index 00000000..2d29fb7a
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/Product.java
@@ -0,0 +1,61 @@
+package com.example.mission14;
+
+public class Product {
+ String name;
+ String manufacturer;
+ int countAgent;
+ int price;
+ int imageRes;
+
+ public Product() {
+
+ }
+
+ public Product(String name, String manufacturer, int countAgent, int price, int imageRes) {
+ this.name = name;
+ this.manufacturer = manufacturer;
+ this.countAgent = countAgent;
+ this.price = price;
+ this.imageRes = imageRes;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getManufacturer() {
+ return manufacturer;
+ }
+
+ public void setManufacturer(String manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+
+ public int getCountAgent() {
+ return countAgent;
+ }
+
+ public void setCountAgent(int countAgent) {
+ this.countAgent = countAgent;
+ }
+
+ public int getPrice() {
+ return price;
+ }
+
+ public void setPrice(int price) {
+ this.price = price;
+ }
+
+ public int getImageRes() {
+ return imageRes;
+ }
+
+ public void setImageRes(int imageRes) {
+ this.imageRes = imageRes;
+ }
+}
diff --git a/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/ProductAdapter.java b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/ProductAdapter.java
new file mode 100644
index 00000000..cc811767
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/java/com/example/mission14/ProductAdapter.java
@@ -0,0 +1,103 @@
+package com.example.mission14;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+public class ProductAdapter extends RecyclerView.Adapter
+ implements OnProductItemClickListener {
+ ArrayList items = new ArrayList();
+
+ OnProductItemClickListener listener;
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
+ LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
+ View itemView = inflater.inflate(R.layout.shopping_item, viewGroup, false);
+
+ return new ViewHolder(itemView, this);
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder viewHolder, int position) {
+ Product item = items.get(position);
+ viewHolder.setItem(item);
+ }
+
+ @Override
+ public int getItemCount() {
+ return items.size();
+ }
+
+ public void addItem(Product item) {
+ items.add(item);
+ }
+
+ public void setItems(ArrayList items) {
+ this.items = items;
+ }
+
+ public Product getItem(int position) {
+ return items.get(position);
+ }
+
+ public void setItem(int position, Product item) {
+ items.set(position, item);
+ }
+
+ public void setOnItemClickListener(OnProductItemClickListener listener) {
+ this.listener = listener;
+ }
+
+ @Override
+ public void onItemClick(ViewHolder holder, View view, int position) {
+ if (listener != null) {
+ listener.onItemClick(holder, view, position);
+ }
+ }
+
+ static class ViewHolder extends RecyclerView.ViewHolder {
+ TextView textView1;
+ TextView textView2;
+ TextView textView3;
+ TextView textView4;
+
+ ImageView imageView1;
+
+ public ViewHolder(View itemView, final OnProductItemClickListener listener) {
+ super(itemView);
+
+ textView1 = itemView.findViewById(R.id.textView1);
+ textView2 = itemView.findViewById(R.id.textView2);
+ textView3 = itemView.findViewById(R.id.textView3);
+ textView4 = itemView.findViewById(R.id.textView4);
+
+ imageView1 = itemView.findViewById(R.id.imageView);
+
+ itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ int position = getAdapterPosition();
+
+ if (listener != null) {
+ listener.onItemClick(ViewHolder.this, view, position);
+ }
+ }
+ });
+ }
+
+ public void setItem(Product item) {
+ textView1.setText(String.valueOf(item.getCountAgent()));
+ textView2.setText(item.getName());
+ textView4.setText(String.valueOf(item.getPrice()));
+ imageView1.setImageResource(item.getImageRes());
+ }
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes1.jpg b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes1.jpg
new file mode 100644
index 00000000..f57f2e84
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes1.jpg differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes2.jpg b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes2.jpg
new file mode 100644
index 00000000..775ca9d0
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes2.jpg differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes3.jpg b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes3.jpg
new file mode 100644
index 00000000..16737bf3
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes3.jpg differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes4.jpg b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes4.jpg
new file mode 100644
index 00000000..6b198355
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/clothes4.jpg differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/customer.png b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/customer.png
new file mode 100644
index 00000000..ade752ea
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/customer.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/layout_background.9.png b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/layout_background.9.png
new file mode 100644
index 00000000..fb08c303
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/drawable-v24/layout_background.9.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/Mission/Mission14/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/layout/activity_main.xml b/second/07_select/Mission/Mission14/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..17ff7d46
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/layout/shopping_item.xml b/second/07_select/Mission/Mission14/app/src/main/res/layout/shopping_item.xml
new file mode 100644
index 00000000..58d70014
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/layout/shopping_item.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/Mission/Mission14/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/values-night/themes.xml b/second/07_select/Mission/Mission14/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..0a62e4e4
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/values/colors.xml b/second/07_select/Mission/Mission14/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/values/strings.xml b/second/07_select/Mission/Mission14/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..374a294f
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Mission14
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/main/res/values/themes.xml b/second/07_select/Mission/Mission14/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..0673e55b
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/app/src/test/java/com/example/mission14/ExampleUnitTest.java b/second/07_select/Mission/Mission14/app/src/test/java/com/example/mission14/ExampleUnitTest.java
new file mode 100644
index 00000000..3f3b7820
--- /dev/null
+++ b/second/07_select/Mission/Mission14/app/src/test/java/com/example/mission14/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.mission14;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/build.gradle b/second/07_select/Mission/Mission14/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/Mission/Mission14/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/gradle.properties b/second/07_select/Mission/Mission14/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/Mission/Mission14/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/Mission/Mission14/gradle/wrapper/gradle-wrapper.jar b/second/07_select/Mission/Mission14/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/Mission/Mission14/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/Mission/Mission14/gradle/wrapper/gradle-wrapper.properties b/second/07_select/Mission/Mission14/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..1af91873
--- /dev/null
+++ b/second/07_select/Mission/Mission14/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Aug 28 10:17:02 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/Mission/Mission14/gradlew b/second/07_select/Mission/Mission14/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/Mission/Mission14/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/Mission/Mission14/gradlew.bat b/second/07_select/Mission/Mission14/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/Mission/Mission14/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/Mission/Mission14/settings.gradle b/second/07_select/Mission/Mission14/settings.gradle
new file mode 100644
index 00000000..05aca871
--- /dev/null
+++ b/second/07_select/Mission/Mission14/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "Mission14"
+include ':app'
diff --git a/second/07_select/SampleLayout/.gitignore b/second/07_select/SampleLayout/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/SampleLayout/.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/second/07_select/SampleLayout/.idea/.gitignore b/second/07_select/SampleLayout/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/SampleLayout/.idea/compiler.xml b/second/07_select/SampleLayout/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/.idea/gradle.xml b/second/07_select/SampleLayout/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/.idea/jarRepositories.xml b/second/07_select/SampleLayout/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/.idea/misc.xml b/second/07_select/SampleLayout/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/.idea/runConfigurations.xml b/second/07_select/SampleLayout/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/.idea/vcs.xml b/second/07_select/SampleLayout/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/07_select/SampleLayout/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/.gitignore b/second/07_select/SampleLayout/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/SampleLayout/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/build.gradle b/second/07_select/SampleLayout/app/build.gradle
new file mode 100644
index 00000000..ecea5e9e
--- /dev/null
+++ b/second/07_select/SampleLayout/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.layout"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/SampleLayout/app/proguard-rules.pro b/second/07_select/SampleLayout/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/SampleLayout/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/second/07_select/SampleLayout/app/src/androidTest/java/com/example/layout/ExampleInstrumentedTest.java b/second/07_select/SampleLayout/app/src/androidTest/java/com/example/layout/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..3b01074d
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/androidTest/java/com/example/layout/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.layout;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.layout", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/AndroidManifest.xml b/second/07_select/SampleLayout/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..13c92436
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/java/com/example/layout/Layout1.java b/second/07_select/SampleLayout/app/src/main/java/com/example/layout/Layout1.java
new file mode 100644
index 00000000..47e2ad07
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/java/com/example/layout/Layout1.java
@@ -0,0 +1,47 @@
+package com.example.layout;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+public class Layout1 extends LinearLayout {
+ ImageView imageView;
+ TextView textView;
+ TextView textView2;
+
+ public Layout1(Context context) {
+ super(context);
+ init(context);
+ }
+
+ public Layout1(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ init(context);
+ }
+
+ private void init(Context context) {
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ inflater.inflate(R.layout.layout1, this, true);
+
+ imageView = findViewById(R.id.imageView);
+ textView = findViewById(R.id.textView);
+ textView2 = findViewById(R.id.textView2);
+ }
+
+ public void setImage(int resId) {
+ imageView.setImageResource(resId);
+ }
+
+ public void setName(String name) {
+ textView.setText(name);
+ }
+
+ public void setMobile(String mobile) {
+ textView2.setText(mobile);
+ }
+}
diff --git a/second/07_select/SampleLayout/app/src/main/java/com/example/layout/MainActivity.java b/second/07_select/SampleLayout/app/src/main/java/com/example/layout/MainActivity.java
new file mode 100644
index 00000000..893d0413
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/java/com/example/layout/MainActivity.java
@@ -0,0 +1,38 @@
+package com.example.layout;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+public class MainActivity extends AppCompatActivity {
+ Layout1 layout1;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ layout1 = findViewById(R.id.layout1);
+ layout1.setImage(R.drawable.profile1);
+ layout1.setName("홍길동");
+ layout1.setMobile("010-1234-1234");
+
+ Button button = findViewById(R.id.button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ layout1.setImage(R.drawable.profile1);
+ }
+ });
+
+ Button button2 = findViewById(R.id.button2);
+ button2.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ layout1.setImage(R.drawable.profile2);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/SampleLayout/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/SampleLayout/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/SampleLayout/app/src/main/res/drawable/profile1.png b/second/07_select/SampleLayout/app/src/main/res/drawable/profile1.png
new file mode 100644
index 00000000..1e2d55e5
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/drawable/profile1.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/drawable/profile2.png b/second/07_select/SampleLayout/app/src/main/res/drawable/profile2.png
new file mode 100644
index 00000000..54a64f88
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/drawable/profile2.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/layout/activity_main.xml b/second/07_select/SampleLayout/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..594d2fc9
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/layout/layout1.xml b/second/07_select/SampleLayout/app/src/main/res/layout/layout1.xml
new file mode 100644
index 00000000..ad5480d7
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/layout/layout1.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/SampleLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/SampleLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/SampleLayout/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleLayout/app/src/main/res/values-night/themes.xml b/second/07_select/SampleLayout/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..763d9233
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/values/colors.xml b/second/07_select/SampleLayout/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/values/strings.xml b/second/07_select/SampleLayout/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..b1a3b62d
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleLayout
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/main/res/values/themes.xml b/second/07_select/SampleLayout/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..6369531b
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/app/src/test/java/com/example/layout/ExampleUnitTest.java b/second/07_select/SampleLayout/app/src/test/java/com/example/layout/ExampleUnitTest.java
new file mode 100644
index 00000000..6b9403ba
--- /dev/null
+++ b/second/07_select/SampleLayout/app/src/test/java/com/example/layout/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.layout;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/build.gradle b/second/07_select/SampleLayout/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/SampleLayout/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/gradle.properties b/second/07_select/SampleLayout/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/SampleLayout/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/SampleLayout/gradle/wrapper/gradle-wrapper.jar b/second/07_select/SampleLayout/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/SampleLayout/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/SampleLayout/gradle/wrapper/gradle-wrapper.properties b/second/07_select/SampleLayout/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..73b0df91
--- /dev/null
+++ b/second/07_select/SampleLayout/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Aug 11 00:09:49 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/SampleLayout/gradlew b/second/07_select/SampleLayout/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/SampleLayout/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/SampleLayout/gradlew.bat b/second/07_select/SampleLayout/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/SampleLayout/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/SampleLayout/settings.gradle b/second/07_select/SampleLayout/settings.gradle
new file mode 100644
index 00000000..74d2ef82
--- /dev/null
+++ b/second/07_select/SampleLayout/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleLayout"
+include ':app'
diff --git a/second/07_select/SampleNinePatch/.gitignore b/second/07_select/SampleNinePatch/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.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/second/07_select/SampleNinePatch/.idea/.gitignore b/second/07_select/SampleNinePatch/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/SampleNinePatch/.idea/compiler.xml b/second/07_select/SampleNinePatch/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/.idea/gradle.xml b/second/07_select/SampleNinePatch/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/.idea/jarRepositories.xml b/second/07_select/SampleNinePatch/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/.idea/misc.xml b/second/07_select/SampleNinePatch/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/.idea/runConfigurations.xml b/second/07_select/SampleNinePatch/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/.idea/vcs.xml b/second/07_select/SampleNinePatch/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/07_select/SampleNinePatch/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/.gitignore b/second/07_select/SampleNinePatch/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/build.gradle b/second/07_select/SampleNinePatch/app/build.gradle
new file mode 100644
index 00000000..897cbf03
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.ninepatch"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/SampleNinePatch/app/proguard-rules.pro b/second/07_select/SampleNinePatch/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/SampleNinePatch/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/second/07_select/SampleNinePatch/app/src/androidTest/java/com/example/ninepatch/ExampleInstrumentedTest.java b/second/07_select/SampleNinePatch/app/src/androidTest/java/com/example/ninepatch/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..85d38695
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/androidTest/java/com/example/ninepatch/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.ninepatch;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.ninepatch", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/AndroidManifest.xml b/second/07_select/SampleNinePatch/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..1f6578ed
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/java/com/example/ninepatch/MainActivity.java b/second/07_select/SampleNinePatch/app/src/main/java/com/example/ninepatch/MainActivity.java
new file mode 100644
index 00000000..3c4a4640
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/java/com/example/ninepatch/MainActivity.java
@@ -0,0 +1,14 @@
+package com.example.ninepatch;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/SampleNinePatch/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/drawable/button_image_01.png b/second/07_select/SampleNinePatch/app/src/main/res/drawable/button_image_01.png
new file mode 100644
index 00000000..48a182a5
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/drawable/button_image_01.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/drawable/button_image_02.9.png b/second/07_select/SampleNinePatch/app/src/main/res/drawable/button_image_02.9.png
new file mode 100644
index 00000000..8061a3f9
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/drawable/button_image_02.9.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/SampleNinePatch/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/layout/activity_main.xml b/second/07_select/SampleNinePatch/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..ee1ab63f
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/SampleNinePatch/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/values-night/themes.xml b/second/07_select/SampleNinePatch/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..978b0455
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/values/colors.xml b/second/07_select/SampleNinePatch/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/values/strings.xml b/second/07_select/SampleNinePatch/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..06518f40
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleNinePatch
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/main/res/values/themes.xml b/second/07_select/SampleNinePatch/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..2ec9ebf0
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/app/src/test/java/com/example/ninepatch/ExampleUnitTest.java b/second/07_select/SampleNinePatch/app/src/test/java/com/example/ninepatch/ExampleUnitTest.java
new file mode 100644
index 00000000..5432085c
--- /dev/null
+++ b/second/07_select/SampleNinePatch/app/src/test/java/com/example/ninepatch/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.ninepatch;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/build.gradle b/second/07_select/SampleNinePatch/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/SampleNinePatch/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/gradle.properties b/second/07_select/SampleNinePatch/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/SampleNinePatch/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/SampleNinePatch/gradle/wrapper/gradle-wrapper.jar b/second/07_select/SampleNinePatch/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/SampleNinePatch/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/SampleNinePatch/gradle/wrapper/gradle-wrapper.properties b/second/07_select/SampleNinePatch/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..ce0e1659
--- /dev/null
+++ b/second/07_select/SampleNinePatch/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Aug 10 15:43:02 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/SampleNinePatch/gradlew b/second/07_select/SampleNinePatch/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/SampleNinePatch/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/SampleNinePatch/gradlew.bat b/second/07_select/SampleNinePatch/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/SampleNinePatch/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/SampleNinePatch/settings.gradle b/second/07_select/SampleNinePatch/settings.gradle
new file mode 100644
index 00000000..979bc57c
--- /dev/null
+++ b/second/07_select/SampleNinePatch/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleNinePatch"
+include ':app'
diff --git a/second/07_select/SampleRecyclerView/.gitignore b/second/07_select/SampleRecyclerView/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.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/second/07_select/SampleRecyclerView/.idea/.gitignore b/second/07_select/SampleRecyclerView/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/SampleRecyclerView/.idea/compiler.xml b/second/07_select/SampleRecyclerView/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/.idea/gradle.xml b/second/07_select/SampleRecyclerView/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/.idea/jarRepositories.xml b/second/07_select/SampleRecyclerView/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/.idea/misc.xml b/second/07_select/SampleRecyclerView/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/.idea/runConfigurations.xml b/second/07_select/SampleRecyclerView/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/.idea/vcs.xml b/second/07_select/SampleRecyclerView/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/.gitignore b/second/07_select/SampleRecyclerView/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/build.gradle b/second/07_select/SampleRecyclerView/app/build.gradle
new file mode 100644
index 00000000..4f78f106
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.recyclerview"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/SampleRecyclerView/app/proguard-rules.pro b/second/07_select/SampleRecyclerView/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/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/second/07_select/SampleRecyclerView/app/src/androidTest/java/com/example/recyclerview/ExampleInstrumentedTest.java b/second/07_select/SampleRecyclerView/app/src/androidTest/java/com/example/recyclerview/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..d7f4ca6f
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/androidTest/java/com/example/recyclerview/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.recyclerview;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.recyclerview", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/AndroidManifest.xml b/second/07_select/SampleRecyclerView/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..f893b715
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/MainActivity.java b/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/MainActivity.java
new file mode 100644
index 00000000..0922b554
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/MainActivity.java
@@ -0,0 +1,29 @@
+package com.example.recyclerview;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ RecyclerView recyclerView = findViewById(R.id.recyclerView);
+
+ LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
+ recyclerView.setLayoutManager(layoutManager);
+
+ PersonAdapter adapter = new PersonAdapter();
+
+ adapter.addItem(new Person("김민수", "010-1000-1000"));
+ adapter.addItem(new Person("김하늘", "010-2000-2000"));
+ adapter.addItem(new Person("홍길동", "010-3000-3000"));
+
+ recyclerView.setAdapter(adapter);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/Person.java b/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/Person.java
new file mode 100644
index 00000000..f844aba2
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/Person.java
@@ -0,0 +1,27 @@
+package com.example.recyclerview;
+
+public class Person {
+ String name;
+ String mobile;
+
+ public Person(String name, String mobile) {
+ this.name = name;
+ this.mobile = mobile;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+}
diff --git a/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/PersonAdapter.java b/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/PersonAdapter.java
new file mode 100644
index 00000000..b3aa0d4e
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/java/com/example/recyclerview/PersonAdapter.java
@@ -0,0 +1,70 @@
+package com.example.recyclerview;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import org.w3c.dom.Text;
+
+import java.util.ArrayList;
+
+public class PersonAdapter extends RecyclerView.Adapter {
+ ArrayList items = new ArrayList();
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
+ LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
+ View itemView = inflater.inflate(R.layout.person_item, viewGroup, false);
+
+ return new ViewHolder(itemView);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
+ Person item = items.get(position);
+ viewHolder.setItem(item);
+ }
+
+ @Override
+ public int getItemCount() {
+ return items.size();
+ }
+
+ public void addItem(Person item) {
+ items.add(item);
+ }
+
+ public void setItems(ArrayList items) {
+ this.items = items;
+ }
+
+ public Person getItem(int position) {
+ return items.get(position);
+ }
+
+ public void setItem(int position, Person item) {
+ items.set(position, item);
+ }
+
+ static class ViewHolder extends RecyclerView.ViewHolder {
+ TextView textView;
+ TextView textView2;
+
+ public ViewHolder(View itemView) {
+ super(itemView);
+
+ textView = itemView.findViewById(R.id.textView);
+ textView2 = itemView.findViewById(R.id.textView2);
+ }
+
+ public void setItem(Person item) {
+ textView.setText(item.getName());
+ textView2.setText(item.getMobile());
+ }
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/SampleRecyclerView/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/SampleRecyclerView/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/layout/activity_main.xml b/second/07_select/SampleRecyclerView/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..1b8abcbf
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/layout/person_item.xml b/second/07_select/SampleRecyclerView/app/src/main/res/layout/person_item.xml
new file mode 100644
index 00000000..b78d117b
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/layout/person_item.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/SampleRecyclerView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/values-night/themes.xml b/second/07_select/SampleRecyclerView/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..ff4db9a3
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/values/colors.xml b/second/07_select/SampleRecyclerView/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/values/strings.xml b/second/07_select/SampleRecyclerView/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..0adcf7e7
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleRecyclerView
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/main/res/values/themes.xml b/second/07_select/SampleRecyclerView/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..dc48bb35
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/app/src/test/java/com/example/recyclerview/ExampleUnitTest.java b/second/07_select/SampleRecyclerView/app/src/test/java/com/example/recyclerview/ExampleUnitTest.java
new file mode 100644
index 00000000..02f682c1
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/app/src/test/java/com/example/recyclerview/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.recyclerview;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/build.gradle b/second/07_select/SampleRecyclerView/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/gradle.properties b/second/07_select/SampleRecyclerView/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView/gradle/wrapper/gradle-wrapper.jar b/second/07_select/SampleRecyclerView/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/SampleRecyclerView/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/SampleRecyclerView/gradle/wrapper/gradle-wrapper.properties b/second/07_select/SampleRecyclerView/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..2f918544
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Aug 11 00:37:00 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/SampleRecyclerView/gradlew b/second/07_select/SampleRecyclerView/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/SampleRecyclerView/gradlew.bat b/second/07_select/SampleRecyclerView/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/SampleRecyclerView/settings.gradle b/second/07_select/SampleRecyclerView/settings.gradle
new file mode 100644
index 00000000..6549486d
--- /dev/null
+++ b/second/07_select/SampleRecyclerView/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleRecyclerView"
+include ':app'
diff --git a/second/07_select/SampleRecyclerView2/.gitignore b/second/07_select/SampleRecyclerView2/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.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/second/07_select/SampleRecyclerView2/.idea/.gitignore b/second/07_select/SampleRecyclerView2/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/SampleRecyclerView2/.idea/.name b/second/07_select/SampleRecyclerView2/.idea/.name
new file mode 100644
index 00000000..a8ade15a
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/.name
@@ -0,0 +1 @@
+SampleRecyclerView
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/.idea/compiler.xml b/second/07_select/SampleRecyclerView2/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/.idea/gradle.xml b/second/07_select/SampleRecyclerView2/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/.idea/jarRepositories.xml b/second/07_select/SampleRecyclerView2/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/.idea/misc.xml b/second/07_select/SampleRecyclerView2/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/.idea/runConfigurations.xml b/second/07_select/SampleRecyclerView2/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/.idea/vcs.xml b/second/07_select/SampleRecyclerView2/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/.gitignore b/second/07_select/SampleRecyclerView2/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/.idea/workspace.xml b/second/07_select/SampleRecyclerView2/app/.idea/workspace.xml
new file mode 100644
index 00000000..2fa14814
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/.idea/workspace.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/build.gradle b/second/07_select/SampleRecyclerView2/app/build.gradle
new file mode 100644
index 00000000..4f78f106
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.recyclerview"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/SampleRecyclerView2/app/proguard-rules.pro b/second/07_select/SampleRecyclerView2/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/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/second/07_select/SampleRecyclerView2/app/src/androidTest/java/com/example/recyclerview2/ExampleInstrumentedTest.java b/second/07_select/SampleRecyclerView2/app/src/androidTest/java/com/example/recyclerview2/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..44fb5ee1
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/androidTest/java/com/example/recyclerview2/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.recyclerview2;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.recyclerview", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/AndroidManifest.xml b/second/07_select/SampleRecyclerView2/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..4fc9611f
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/MainActivity.java b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/MainActivity.java
new file mode 100644
index 00000000..6dbf7b32
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/MainActivity.java
@@ -0,0 +1,52 @@
+package com.example.recyclerview2;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Toast;
+
+public class MainActivity extends AppCompatActivity {
+ RecyclerView recyclerView;
+ PersonAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ recyclerView = findViewById(R.id.recyclerView);
+
+ GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
+ recyclerView.setLayoutManager(layoutManager);
+
+ PersonAdapter adapter = new PersonAdapter();
+
+ adapter.addItem(new Person("김민수", "010-1000-1000"));
+ adapter.addItem(new Person("김하늘", "010-2000-2000"));
+ adapter.addItem(new Person("홍길동", "010-3000-3000"));
+ adapter.addItem(new Person("내이름1", "010-4000-4000"));
+ adapter.addItem(new Person("내이름2", "010-4000-4000"));
+ adapter.addItem(new Person("내이름3", "010-4000-4000"));
+ adapter.addItem(new Person("내이름4", "010-4000-4000"));
+ adapter.addItem(new Person("내이름5", "010-4000-4000"));
+ adapter.addItem(new Person("내이름6", "010-4000-4000"));
+ adapter.addItem(new Person("내이름7", "010-4000-4000"));
+ adapter.addItem(new Person("내이름8", "010-4000-4000"));
+ adapter.addItem(new Person("내이름9", "010-4000-4000"));
+ adapter.addItem(new Person("내이름10", "010-4000-4000"));
+
+ recyclerView.setAdapter(adapter);
+
+ adapter.setOnItemClickListener(new OnPersonItemClickListener() {
+ @Override
+ public void onItemClick(PersonAdapter.ViewHolder holder, View view, int position) {
+ Person item = adapter.getItem(position);
+ Toast.makeText(getApplicationContext(), "아이템 선택됨" + item.getName(), Toast.LENGTH_LONG).show();
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/OnPersonItemClickListener.java b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/OnPersonItemClickListener.java
new file mode 100644
index 00000000..576e50f5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/OnPersonItemClickListener.java
@@ -0,0 +1,7 @@
+package com.example.recyclerview2;
+
+import android.view.View;
+
+public interface OnPersonItemClickListener {
+ public void onItemClick(PersonAdapter.ViewHolder holder, View view, int position);
+}
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/Person.java b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/Person.java
new file mode 100644
index 00000000..f6ee30a0
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/Person.java
@@ -0,0 +1,27 @@
+package com.example.recyclerview2;
+
+public class Person {
+ String name;
+ String mobile;
+
+ public Person(String name, String mobile) {
+ this.name = name;
+ this.mobile = mobile;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+}
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/PersonAdapter.java b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/PersonAdapter.java
new file mode 100644
index 00000000..76f06ef0
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/java/com/example/recyclerview2/PersonAdapter.java
@@ -0,0 +1,90 @@
+package com.example.recyclerview2;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+public class PersonAdapter extends RecyclerView.Adapter implements OnPersonItemClickListener {
+ ArrayList items = new ArrayList();
+ OnPersonItemClickListener listener;
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
+ LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
+ View itemView = inflater.inflate(R.layout.person_item, viewGroup, false);
+
+ return new ViewHolder(itemView, this);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
+ Person item = items.get(position);
+ viewHolder.setItem(item);
+ }
+
+ @Override
+ public int getItemCount() {
+ return items.size();
+ }
+
+ public void addItem(Person item) {
+ items.add(item);
+ }
+
+ public void setItems(ArrayList items) {
+ this.items = items;
+ }
+
+ public Person getItem(int position) {
+ return items.get(position);
+ }
+
+ public void setItem(int position, Person item) {
+ items.set(position, item);
+ }
+
+ static class ViewHolder extends RecyclerView.ViewHolder {
+ TextView textView;
+ TextView textView2;
+
+ public ViewHolder(View itemView, final OnPersonItemClickListener listener) {
+ super(itemView);
+
+ textView = itemView.findViewById(R.id.textView);
+ textView2 = itemView.findViewById(R.id.textView2);
+
+ itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ int position = getAdapterPosition();
+ if (listener != null) {
+ listener.onItemClick(ViewHolder.this, view, position);
+ }
+ }
+ });
+ }
+
+ public void setItem(Person item) {
+ textView.setText(item.getName());
+ textView2.setText(item.getMobile());
+ }
+ }
+
+ public void setOnItemClickListener(OnPersonItemClickListener listener) {
+ this.listener = listener;
+ }
+
+ @Override
+ public void onItemClick(ViewHolder holder, View view, int position) {
+ if (listener != null) {
+ listener.onItemClick(holder, view, position);
+ }
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/layout/activity_main.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..1b8abcbf
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/layout/person_item.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/layout/person_item.xml
new file mode 100644
index 00000000..e7c00b79
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/layout/person_item.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/values-night/themes.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..ff4db9a3
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/values/colors.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/values/strings.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..0adcf7e7
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleRecyclerView
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/main/res/values/themes.xml b/second/07_select/SampleRecyclerView2/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..dc48bb35
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/app/src/test/java/com/example/recyclerview2/ExampleUnitTest.java b/second/07_select/SampleRecyclerView2/app/src/test/java/com/example/recyclerview2/ExampleUnitTest.java
new file mode 100644
index 00000000..9d00117b
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/app/src/test/java/com/example/recyclerview2/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.recyclerview2;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/build.gradle b/second/07_select/SampleRecyclerView2/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/gradle.properties b/second/07_select/SampleRecyclerView2/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/SampleRecyclerView2/gradle/wrapper/gradle-wrapper.jar b/second/07_select/SampleRecyclerView2/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/SampleRecyclerView2/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/SampleRecyclerView2/gradle/wrapper/gradle-wrapper.properties b/second/07_select/SampleRecyclerView2/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..2f918544
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Aug 11 00:37:00 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/SampleRecyclerView2/gradlew b/second/07_select/SampleRecyclerView2/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/SampleRecyclerView2/gradlew.bat b/second/07_select/SampleRecyclerView2/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/SampleRecyclerView2/settings.gradle b/second/07_select/SampleRecyclerView2/settings.gradle
new file mode 100644
index 00000000..6549486d
--- /dev/null
+++ b/second/07_select/SampleRecyclerView2/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleRecyclerView"
+include ':app'
diff --git a/second/07_select/SampleSpinner/.gitignore b/second/07_select/SampleSpinner/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/SampleSpinner/.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/second/07_select/SampleSpinner/.idea/.gitignore b/second/07_select/SampleSpinner/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/SampleSpinner/.idea/compiler.xml b/second/07_select/SampleSpinner/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/.idea/gradle.xml b/second/07_select/SampleSpinner/.idea/gradle.xml
new file mode 100644
index 00000000..440480e5
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/.idea/jarRepositories.xml b/second/07_select/SampleSpinner/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/.idea/misc.xml b/second/07_select/SampleSpinner/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/.idea/runConfigurations.xml b/second/07_select/SampleSpinner/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/.idea/vcs.xml b/second/07_select/SampleSpinner/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/07_select/SampleSpinner/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/.gitignore b/second/07_select/SampleSpinner/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/build.gradle b/second/07_select/SampleSpinner/app/build.gradle
new file mode 100644
index 00000000..2a85b41a
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.spinner"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/SampleSpinner/app/proguard-rules.pro b/second/07_select/SampleSpinner/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/SampleSpinner/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/second/07_select/SampleSpinner/app/src/androidTest/java/com/example/spinner/ExampleInstrumentedTest.java b/second/07_select/SampleSpinner/app/src/androidTest/java/com/example/spinner/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..303986fd
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/androidTest/java/com/example/spinner/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.spinner;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.spinner", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/AndroidManifest.xml b/second/07_select/SampleSpinner/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..ef24e215
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/java/com/example/spinner/MainActivity.java b/second/07_select/SampleSpinner/app/src/main/java/com/example/spinner/MainActivity.java
new file mode 100644
index 00000000..9f941013
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/java/com/example/spinner/MainActivity.java
@@ -0,0 +1,43 @@
+package com.example.spinner;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+public class MainActivity extends AppCompatActivity {
+ TextView textView;
+
+ String[] items = {"mike", "angel", "crow", "john", "ginnie", "sally", "cohen", "rice"};
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ textView = findViewById(R.id.textView);
+
+ Spinner spinner = findViewById(R.id.spinner);
+ ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, items);
+ adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
+
+ spinner.setAdapter(adapter);
+
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ textView.setText(items[position]);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ textView.setText("");
+ }
+ });
+
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/SampleSpinner/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/SampleSpinner/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/SampleSpinner/app/src/main/res/layout/activity_main.xml b/second/07_select/SampleSpinner/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..4f227e75
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/SampleSpinner/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/SampleSpinner/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/SampleSpinner/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleSpinner/app/src/main/res/values-night/themes.xml b/second/07_select/SampleSpinner/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..8b3c0371
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/values/colors.xml b/second/07_select/SampleSpinner/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/values/strings.xml b/second/07_select/SampleSpinner/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..6db8ce2d
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleSpinner
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/main/res/values/themes.xml b/second/07_select/SampleSpinner/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..a16f6fe9
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/app/src/test/java/com/example/spinner/ExampleUnitTest.java b/second/07_select/SampleSpinner/app/src/test/java/com/example/spinner/ExampleUnitTest.java
new file mode 100644
index 00000000..79caef77
--- /dev/null
+++ b/second/07_select/SampleSpinner/app/src/test/java/com/example/spinner/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.spinner;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/build.gradle b/second/07_select/SampleSpinner/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/SampleSpinner/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/gradle.properties b/second/07_select/SampleSpinner/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/SampleSpinner/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/SampleSpinner/gradle/wrapper/gradle-wrapper.jar b/second/07_select/SampleSpinner/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/SampleSpinner/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/SampleSpinner/gradle/wrapper/gradle-wrapper.properties b/second/07_select/SampleSpinner/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..b9a678fb
--- /dev/null
+++ b/second/07_select/SampleSpinner/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Aug 11 01:36:03 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/SampleSpinner/gradlew b/second/07_select/SampleSpinner/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/SampleSpinner/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/SampleSpinner/gradlew.bat b/second/07_select/SampleSpinner/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/SampleSpinner/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/SampleSpinner/settings.gradle b/second/07_select/SampleSpinner/settings.gradle
new file mode 100644
index 00000000..10ef6eef
--- /dev/null
+++ b/second/07_select/SampleSpinner/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleSpinner"
+include ':app'
diff --git a/second/07_select/SampleView/.gitignore b/second/07_select/SampleView/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/second/07_select/SampleView/.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/second/07_select/SampleView/.idea/.gitignore b/second/07_select/SampleView/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/second/07_select/SampleView/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/second/07_select/SampleView/.idea/compiler.xml b/second/07_select/SampleView/.idea/compiler.xml
new file mode 100644
index 00000000..fb7f4a8a
--- /dev/null
+++ b/second/07_select/SampleView/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/.idea/gradle.xml b/second/07_select/SampleView/.idea/gradle.xml
new file mode 100644
index 00000000..5cd135a0
--- /dev/null
+++ b/second/07_select/SampleView/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/.idea/jarRepositories.xml b/second/07_select/SampleView/.idea/jarRepositories.xml
new file mode 100644
index 00000000..0380d8d3
--- /dev/null
+++ b/second/07_select/SampleView/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/.idea/misc.xml b/second/07_select/SampleView/.idea/misc.xml
new file mode 100644
index 00000000..6199cc2a
--- /dev/null
+++ b/second/07_select/SampleView/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/.idea/runConfigurations.xml b/second/07_select/SampleView/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/second/07_select/SampleView/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/.idea/vcs.xml b/second/07_select/SampleView/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/second/07_select/SampleView/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/.gitignore b/second/07_select/SampleView/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/second/07_select/SampleView/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/build.gradle b/second/07_select/SampleView/app/build.gradle
new file mode 100644
index 00000000..b2b42de0
--- /dev/null
+++ b/second/07_select/SampleView/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ applicationId "com.example.view"
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
+ 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/second/07_select/SampleView/app/proguard-rules.pro b/second/07_select/SampleView/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/second/07_select/SampleView/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/second/07_select/SampleView/app/src/androidTest/java/com/example/view/ExampleInstrumentedTest.java b/second/07_select/SampleView/app/src/androidTest/java/com/example/view/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..6aa12723
--- /dev/null
+++ b/second/07_select/SampleView/app/src/androidTest/java/com/example/view/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.view;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.view", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/AndroidManifest.xml b/second/07_select/SampleView/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..96d0f390
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/java/com/example/view/MainActivity.java b/second/07_select/SampleView/app/src/main/java/com/example/view/MainActivity.java
new file mode 100644
index 00000000..e542b49c
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/java/com/example/view/MainActivity.java
@@ -0,0 +1,14 @@
+package com.example.view;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/java/com/example/view/MyButton.java b/second/07_select/SampleView/app/src/main/java/com/example/view/MyButton.java
new file mode 100644
index 00000000..a15f6479
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/java/com/example/view/MyButton.java
@@ -0,0 +1,61 @@
+package com.example.view;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatButton;
+
+public class MyButton extends AppCompatButton {
+ public MyButton(Context context) {
+ super(context);
+ init(context);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+
+ Log.d("MyButton", "onDraw 호출됨");
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ Log.d("MyButton", "onTouchEvent 호출됨");
+
+ int action = event.getAction();
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ setBackgroundColor(Color.BLUE);
+ setTextColor(Color.RED);
+ break;
+ case MotionEvent.ACTION_OUTSIDE:
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP:
+ setBackgroundColor(Color.CYAN);
+ setTextColor(Color.BLACK);
+ break;
+ }
+
+ invalidate();
+ return true;
+ }
+
+ public MyButton(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(context);
+ }
+
+ private void init(Context context) {
+ setBackgroundColor(Color.CYAN);
+ setTextColor(Color.BLACK);
+
+ float textSize = getResources().getDimension(R.dimen.text_size);
+ setTextSize(textSize);
+ }
+}
diff --git a/second/07_select/SampleView/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/second/07_select/SampleView/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/drawable/ic_launcher_background.xml b/second/07_select/SampleView/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/second/07_select/SampleView/app/src/main/res/layout/activity_main.xml b/second/07_select/SampleView/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..36422e47
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/second/07_select/SampleView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/second/07_select/SampleView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-hdpi/ic_launcher.png b/second/07_select/SampleView/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a571e600
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/second/07_select/SampleView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61da551c
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-mdpi/ic_launcher.png b/second/07_select/SampleView/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..c41dd285
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/second/07_select/SampleView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..db5080a7
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/second/07_select/SampleView/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..6dba46da
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/second/07_select/SampleView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da31a871
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/second/07_select/SampleView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..15ac6817
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/second/07_select/SampleView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b216f2d3
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/second/07_select/SampleView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..f25a4197
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/second/07_select/SampleView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e96783cc
Binary files /dev/null and b/second/07_select/SampleView/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/second/07_select/SampleView/app/src/main/res/values-night/themes.xml b/second/07_select/SampleView/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..173680e0
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/values/colors.xml b/second/07_select/SampleView/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/values/dimens.xml b/second/07_select/SampleView/app/src/main/res/values/dimens.xml
new file mode 100644
index 00000000..4d8b7077
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/values/dimens.xml
@@ -0,0 +1,4 @@
+
+
+ 16sp
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/values/strings.xml b/second/07_select/SampleView/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..d833438a
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ SampleView
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/main/res/values/themes.xml b/second/07_select/SampleView/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..704b63ca
--- /dev/null
+++ b/second/07_select/SampleView/app/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/second/07_select/SampleView/app/src/test/java/com/example/view/ExampleUnitTest.java b/second/07_select/SampleView/app/src/test/java/com/example/view/ExampleUnitTest.java
new file mode 100644
index 00000000..ce7aa64b
--- /dev/null
+++ b/second/07_select/SampleView/app/src/test/java/com/example/view/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.view;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/second/07_select/SampleView/build.gradle b/second/07_select/SampleView/build.gradle
new file mode 100644
index 00000000..5a7c7fc5
--- /dev/null
+++ b/second/07_select/SampleView/build.gradle
@@ -0,0 +1,25 @@
+// 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:4.2.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ jcenter() // Warning: this repository is going to shut down soon
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/second/07_select/SampleView/gradle.properties b/second/07_select/SampleView/gradle.properties
new file mode 100644
index 00000000..6826e61b
--- /dev/null
+++ b/second/07_select/SampleView/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
\ No newline at end of file
diff --git a/second/07_select/SampleView/gradle/wrapper/gradle-wrapper.jar b/second/07_select/SampleView/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..f6b961fd
Binary files /dev/null and b/second/07_select/SampleView/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/second/07_select/SampleView/gradle/wrapper/gradle-wrapper.properties b/second/07_select/SampleView/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..f60e7f1c
--- /dev/null
+++ b/second/07_select/SampleView/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Aug 10 15:59:34 KST 2021
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/second/07_select/SampleView/gradlew b/second/07_select/SampleView/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/second/07_select/SampleView/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/second/07_select/SampleView/gradlew.bat b/second/07_select/SampleView/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/second/07_select/SampleView/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/second/07_select/SampleView/settings.gradle b/second/07_select/SampleView/settings.gradle
new file mode 100644
index 00000000..dc1e2938
--- /dev/null
+++ b/second/07_select/SampleView/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "SampleView"
+include ':app'
diff --git a/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileChanges/last-build.bin b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileChanges/last-build.bin
new file mode 100644
index 00000000..f76dd238
Binary files /dev/null and b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileChanges/last-build.bin differ
diff --git a/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileHashes/fileHashes.bin b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileHashes/fileHashes.bin
new file mode 100644
index 00000000..78eabf0f
Binary files /dev/null and b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileHashes/fileHashes.bin differ
diff --git a/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileHashes/fileHashes.lock b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileHashes/fileHashes.lock
new file mode 100644
index 00000000..13d0e732
Binary files /dev/null and b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/fileHashes/fileHashes.lock differ
diff --git a/second/09_thread/SampleAsyncTask/.gradle/6.7.1/gc.properties b/second/09_thread/SampleAsyncTask/.gradle/6.7.1/gc.properties
new file mode 100644
index 00000000..e69de29b
diff --git a/second/09_thread/SampleAsyncTask/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/second/09_thread/SampleAsyncTask/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 00000000..ab7b79ef
Binary files /dev/null and b/second/09_thread/SampleAsyncTask/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/second/09_thread/SampleAsyncTask/.gradle/buildOutputCleanup/cache.properties b/second/09_thread/SampleAsyncTask/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 00000000..d9de8635
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Thu Aug 19 09:36:01 KST 2021
+gradle.version=6.7.1
diff --git a/second/09_thread/SampleAsyncTask/.gradle/checksums/checksums.lock b/second/09_thread/SampleAsyncTask/.gradle/checksums/checksums.lock
new file mode 100644
index 00000000..eb5e6880
Binary files /dev/null and b/second/09_thread/SampleAsyncTask/.gradle/checksums/checksums.lock differ
diff --git a/second/09_thread/SampleAsyncTask/.gradle/configuration-cache/gc.properties b/second/09_thread/SampleAsyncTask/.gradle/configuration-cache/gc.properties
new file mode 100644
index 00000000..e69de29b
diff --git a/second/09_thread/SampleAsyncTask/.gradle/vcs-1/gc.properties b/second/09_thread/SampleAsyncTask/.gradle/vcs-1/gc.properties
new file mode 100644
index 00000000..e69de29b
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml
new file mode 100644
index 00000000..f29bccc1
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml
new file mode 100644
index 00000000..74437d76
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml
new file mode 100644
index 00000000..e5e82678
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_1_aar.xml
new file mode 100644
index 00000000..7e822059
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_1_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_1_aar.xml
new file mode 100644
index 00000000..cec8145b
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_1_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml
new file mode 100644
index 00000000..22084152
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml
new file mode 100644
index 00000000..edc58e23
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml
new file mode 100644
index 00000000..85cce128
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml
new file mode 100644
index 00000000..309cc739
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml
new file mode 100644
index 00000000..eafc05e9
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_0_aar.xml
new file mode 100644
index 00000000..d156bd81
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml
new file mode 100644
index 00000000..ce613794
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml
new file mode 100644
index 00000000..d7795435
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml
new file mode 100644
index 00000000..bcf3d0c8
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml
new file mode 100644
index 00000000..68376951
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml
new file mode 100644
index 00000000..79035401
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml
new file mode 100644
index 00000000..8467f241
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml
new file mode 100644
index 00000000..b0d2ebc8
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml
new file mode 100644
index 00000000..cfe0da22
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml
new file mode 100644
index 00000000..1d3d6d4a
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml
new file mode 100644
index 00000000..2f6eb99f
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml
new file mode 100644
index 00000000..a1e19120
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml
new file mode 100644
index 00000000..8e3202c4
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml
new file mode 100644
index 00000000..64c3e446
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml
new file mode 100644
index 00000000..57ed31f1
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml
new file mode 100644
index 00000000..89175985
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml
new file mode 100644
index 00000000..2b8192f5
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml
new file mode 100644
index 00000000..906ad697
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml
new file mode 100644
index 00000000..5180a041
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml
new file mode 100644
index 00000000..fa1aa068
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml
new file mode 100644
index 00000000..bdd817e8
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml
new file mode 100644
index 00000000..9878a838
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_core_1_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_core_1_4_0_aar.xml
new file mode 100644
index 00000000..d68fc073
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_core_1_4_0_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml
new file mode 100644
index 00000000..c9edeb37
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml
new file mode 100644
index 00000000..37863515
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_3_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_3_aar.xml
new file mode 100644
index 00000000..2de87d92
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_3_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_monitor_1_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_monitor_1_4_0_aar.xml
new file mode 100644
index 00000000..56b2b14c
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_monitor_1_4_0_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_runner_1_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_runner_1_4_0_aar.xml
new file mode 100644
index 00000000..49fdf446
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_runner_1_4_0_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_services_storage_1_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_services_storage_1_4_0_aar.xml
new file mode 100644
index 00000000..b3d37127
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_test_services_storage_1_4_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml
new file mode 100644
index 00000000..b8df611c
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml
new file mode 100644
index 00000000..80d26425
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml
new file mode 100644
index 00000000..9ae57f62
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml
new file mode 100644
index 00000000..df200125
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml
new file mode 100644
index 00000000..d4ae1779
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml
new file mode 100644
index 00000000..65ed8399
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_google_android_material_material_1_4_0_aar.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_google_android_material_material_1_4_0_aar.xml
new file mode 100644
index 00000000..e7f0e822
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_google_android_material_material_1_4_0_aar.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml
new file mode 100644
index 00000000..2b834ea2
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml
new file mode 100644
index 00000000..662b001e
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml
new file mode 100644
index 00000000..62012eaf
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__junit_junit_4_12.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__junit_junit_4_12.xml
new file mode 100644
index 00000000..6c078d62
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__junit_junit_4_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__junit_junit_4_13_2.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__junit_junit_4_13_2.xml
new file mode 100644
index 00000000..c2cb45da
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__junit_junit_4_13_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 00000000..09cf23d1
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml
new file mode 100644
index 00000000..1a77dd83
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml
new file mode 100644
index 00000000..3d45e8e9
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/modules.xml b/second/09_thread/SampleAsyncTask/.idea/modules.xml
new file mode 100644
index 00000000..863ff30e
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/modules/SampleAsyncTask.iml b/second/09_thread/SampleAsyncTask/.idea/modules/SampleAsyncTask.iml
new file mode 100644
index 00000000..0ee0fc84
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/modules/SampleAsyncTask.iml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleAsyncTask/.idea/modules/app/SampleAsyncTask.app.iml b/second/09_thread/SampleAsyncTask/.idea/modules/app/SampleAsyncTask.app.iml
new file mode 100644
index 00000000..41206578
--- /dev/null
+++ b/second/09_thread/SampleAsyncTask/.idea/modules/app/SampleAsyncTask.app.iml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/second/09_thread/SampleThreadAnimation/local.properties b/second/09_thread/SampleThreadAnimation/local.properties
new file mode 100644
index 00000000..0c001059
--- /dev/null
+++ b/second/09_thread/SampleThreadAnimation/local.properties
@@ -0,0 +1,10 @@
+## This file is automatically generated by Android Studio.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file should *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# Location of the SDK. This is only used by Gradle.
+# For customization when using a Version Control System, please read the
+# header note.
+sdk.dir=/Users/jjuyaa/Library/Android/sdk
\ No newline at end of file