Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new Android app project under Week01/Yido for the Week 1 mission, implementing a single-screen “emotion stamp” UI where selecting an emotion highlights its corresponding label.
Changes:
- Added Gradle project scaffolding (settings/build scripts, wrapper, version catalog).
- Implemented the main screen layout/resources (icons, theme, manifest) and selection behavior in
MainActivity. - Added submission README and screenshots, plus Android Studio project files.
Reviewed changes
Copilot reviewed 34 out of 57 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| Week01/Yido/settings.gradle.kts | Sets up plugin/dependency repositories and includes the :app module. |
| Week01/Yido/README.md | Describes implemented mission requirements and includes screenshots. |
| Week01/Yido/gradlew.bat | Windows Gradle wrapper script. |
| Week01/Yido/gradlew | POSIX Gradle wrapper script. |
| Week01/Yido/gradle/wrapper/gradle-wrapper.properties | Configures Gradle wrapper distribution. |
| Week01/Yido/gradle/libs.versions.toml | Version catalog for dependencies/plugins. |
| Week01/Yido/gradle/gradle-daemon-jvm.properties | Generated Gradle daemon JVM/toolchain configuration. |
| Week01/Yido/gradle.properties | Project-wide Gradle settings. |
| Week01/Yido/build.gradle.kts | Top-level Gradle build configuration. |
| Week01/Yido/app/src/test/java/com/example/yido/ExampleUnitTest.kt | Default unit test scaffold. |
| Week01/Yido/app/src/main/res/xml/data_extraction_rules.xml | Backup/data extraction rules scaffold. |
| Week01/Yido/app/src/main/res/xml/backup_rules.xml | Backup rules scaffold. |
| Week01/Yido/app/src/main/res/values/themes.xml | Day theme resources. |
| Week01/Yido/app/src/main/res/values/strings.xml | String resources (app name). |
| Week01/Yido/app/src/main/res/values/colors.xml | Color resources. |
| Week01/Yido/app/src/main/res/values-night/themes.xml | Night theme resources. |
| Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp | Launcher icon asset (xxxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp | Round launcher icon asset (xxxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp | Launcher icon asset (xxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp | Round launcher icon asset (xxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher.webp | Launcher icon asset (xhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp | Round launcher icon asset (xhdpi). |
| Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher.webp | Launcher icon asset (mdpi). |
| Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp | Round launcher icon asset (mdpi). |
| Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher.webp | Launcher icon asset (hdpi). |
| Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp | Round launcher icon asset (hdpi). |
| Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml | Adaptive launcher icon definition. |
| Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml | Adaptive round launcher icon definition. |
| Week01/Yido/app/src/main/res/layout/activity_main.xml | Main screen UI layout for emotion selection. |
| Week01/Yido/app/src/main/res/drawable/ic_launcher_foreground.xml | Foreground vector for adaptive icon. |
| Week01/Yido/app/src/main/res/drawable/ic_launcher_background.xml | Background vector for adaptive icon. |
| Week01/Yido/app/src/main/res/drawable/ic_face5.xml | Emotion stamp drawable asset. |
| Week01/Yido/app/src/main/res/drawable/ic_face4.xml | Emotion stamp drawable asset. |
| Week01/Yido/app/src/main/res/drawable/ic_face3.xml | Emotion stamp drawable asset. |
| Week01/Yido/app/src/main/res/drawable/ic_face2.xml | Emotion stamp drawable asset. |
| Week01/Yido/app/src/main/res/drawable/ic_face1.xml | Emotion stamp drawable asset. |
| Week01/Yido/app/src/main/res/drawable/ic_back.xml | Back icon drawable asset. |
| Week01/Yido/app/src/main/java/com/example/yido/MainActivity.kt | Implements click handling to highlight the selected emotion label and back behavior. |
| Week01/Yido/app/src/main/AndroidManifest.xml | Declares the app and launcher MainActivity. |
| Week01/Yido/app/src/androidTest/java/com/example/yido/ExampleInstrumentedTest.kt | Default instrumented test scaffold. |
| Week01/Yido/app/proguard-rules.pro | Proguard rules scaffold. |
| Week01/Yido/app/build.gradle.kts | Android application module build configuration. |
| Week01/Yido/app/.gitignore | Ignores app build outputs. |
| Week01/Yido/.gitignore | Ignores Gradle/IDE/build artifacts within the module directory. |
| .idea/vcs.xml | IDE VCS mapping configuration. |
| .idea/modules.xml | IDE module configuration. |
| .idea/misc.xml | IDE project JDK/language level configuration. |
| .idea/markdown.xml | IDE Markdown plugin configuration. |
| .idea/caches/deviceStreaming.xml | IDE device streaming cache data. |
Files not reviewed (5)
- .idea/caches/deviceStreaming.xml: Language not supported
- .idea/markdown.xml: Language not supported
- .idea/misc.xml: Language not supported
- .idea/modules.xml: Language not supported
- .idea/vcs.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
| esac | ||
|
|
||
| CLASSPATH="\\\"\\\"" | ||
|
|
||
|
|
| :execute | ||
| @rem Setup the command line | ||
|
|
||
| set CLASSPATH= | ||
|
|
||
|
|
||
| @rem Execute Gradle | ||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* |
| @@ -0,0 +1,52 @@ | |||
| plugins { | |||
| alias(libs.plugins.android.application) | |||
| compileSdk { | ||
| version = release(36) { | ||
| minorApiLevel = 1 | ||
| } | ||
| } |
| <TextView | ||
| android:id="@+id/text1" | ||
| android:layout_width="wrap_content" | ||
| android:layout_height="wrap_content" | ||
| android:layout_marginTop="150dp" | ||
| android:gravity="center" | ||
| android:text="오늘 하루는 어땠나요?" | ||
| android:textColor="#000000" | ||
| android:textSize="38sp" | ||
| android:fontFamily="@font/gangwon" | ||
| app:layout_constraintEnd_toEndOf="parent" | ||
| app:layout_constraintStart_toStartOf="parent" | ||
| app:layout_constraintTop_toTopOf="parent" /> |
| <ImageView | ||
| android:id="@+id/ic_face5" | ||
| android:layout_width="44dp" | ||
| android:layout_height="48.4dp" | ||
| android:layout_marginTop="20dp" | ||
| android:src="@drawable/ic_face5" | ||
| app:layout_constraintEnd_toEndOf="parent" | ||
| app:layout_constraintStart_toStartOf="parent" | ||
| app:layout_constraintTop_toBottomOf="@+id/text_face4" /> |
| binding.icFace1.setOnClickListener { | ||
| selectEmotion(binding.textFace1, Color.parseColor("#FFBB00")) | ||
| } | ||
|
|
||
| binding.icFace2.setOnClickListener { | ||
| selectEmotion(binding.textFace2, Color.parseColor("#00BFFF")) | ||
| } | ||
|
|
||
| binding.icFace3.setOnClickListener { | ||
| selectEmotion(binding.textFace3, Color.parseColor("#9370DB")) | ||
| } | ||
|
|
||
| binding.icFace4.setOnClickListener { | ||
| selectEmotion(binding.textFace4, Color.parseColor("#32CD32")) | ||
| } | ||
|
|
||
| binding.icFace5.setOnClickListener { | ||
| selectEmotion(binding.textFace5, Color.parseColor("#FF0000")) | ||
| } | ||
|
|
||
| binding.icBack.setOnClickListener { | ||
| finish() | ||
| } | ||
| } | ||
|
|
||
| private fun selectEmotion(selectedText: TextView, color: Int) { | ||
| val textViews = listOf( | ||
| binding.textFace1, | ||
| binding.textFace2, | ||
| binding.textFace3, | ||
| binding.textFace4, | ||
| binding.textFace5 | ||
| ) | ||
|
|
||
| for (textView in textViews) { | ||
| textView.setTextColor(Color.BLACK) | ||
| } |
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <project version="4"> | ||
| <component name="DeviceStreaming"> | ||
| <option name="deviceSelectionList"> | ||
| <list> | ||
| <PersistentDeviceSelectionData> |
| @@ -0,0 +1,6 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK"> | |||
| <project version="4"> | ||
| <component name="ProjectModuleManager"> | ||
| <modules> | ||
| <module fileurl="file://$PROJECT_DIR$/.idea/Android.iml" filepath="$PROJECT_DIR$/.idea/Android.iml" /> |
There was a problem hiding this comment.
Pull request overview
Adds a new Android app project for the Week01 “Yido” mission, implementing a single-screen “emotion stamp” UI with click-to-highlight behavior and the required Gradle/Android project scaffolding.
Changes:
- Introduces a full Android Gradle project structure (wrapper, version catalog, app module).
- Implements the main UI layout and
MainActivityclick-handling to highlight the selected emotion label. - Adds app resources (icons, vectors, themes) and basic README documentation with screenshots.
Reviewed changes
Copilot reviewed 34 out of 57 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| Week01/Yido/settings.gradle.kts | Sets up plugin/dependency repositories and includes :app. |
| Week01/Yido/README.md | Documents mission requirements and provides screenshots. |
| Week01/Yido/gradlew.bat | Adds Windows Gradle wrapper script. |
| Week01/Yido/gradlew | Adds POSIX Gradle wrapper script. |
| Week01/Yido/gradle/wrapper/gradle-wrapper.properties | Pins Gradle distribution for the wrapper. |
| Week01/Yido/gradle/libs.versions.toml | Defines version catalog for dependencies/plugins. |
| Week01/Yido/gradle/gradle-daemon-jvm.properties | Gradle daemon/toolchain configuration file. |
| Week01/Yido/gradle.properties | Project-level Gradle settings (JVM args, Kotlin style). |
| Week01/Yido/build.gradle.kts | Top-level Gradle plugin configuration. |
| Week01/Yido/app/build.gradle.kts | App module build config, dependencies, and view binding enablement. |
| Week01/Yido/app/proguard-rules.pro | Default ProGuard rules template. |
| Week01/Yido/app/.gitignore | Ignores module build output. |
| Week01/Yido/.gitignore | Ignores common Android Studio/Gradle artifacts (within this project folder). |
| Week01/Yido/app/src/main/AndroidManifest.xml | Declares app + launcher MainActivity. |
| Week01/Yido/app/src/main/java/com/example/yido/MainActivity.kt | Implements emotion selection and back navigation behavior. |
| Week01/Yido/app/src/main/res/layout/activity_main.xml | Defines the single-screen UI (text + emotion icons). |
| Week01/Yido/app/src/main/res/values/strings.xml | Declares app name string. |
| Week01/Yido/app/src/main/res/values/colors.xml | Adds basic black/white colors. |
| Week01/Yido/app/src/main/res/values/themes.xml | DayNight Material3 theme configuration. |
| Week01/Yido/app/src/main/res/values-night/themes.xml | Night theme configuration. |
| Week01/Yido/app/src/main/res/xml/backup_rules.xml | Backup rules template. |
| Week01/Yido/app/src/main/res/xml/data_extraction_rules.xml | Data extraction rules template. |
| Week01/Yido/app/src/main/res/drawable/ic_back.xml | Vector back icon used in the UI. |
| Week01/Yido/app/src/main/res/drawable/ic_face1.xml | Vector emotion stamp icon 1. |
| Week01/Yido/app/src/main/res/drawable/ic_face2.xml | Vector emotion stamp icon 2. |
| Week01/Yido/app/src/main/res/drawable/ic_face3.xml | Vector emotion stamp icon 3. |
| Week01/Yido/app/src/main/res/drawable/ic_face4.xml | Vector emotion stamp icon 4. |
| Week01/Yido/app/src/main/res/drawable/ic_face5.xml | Vector emotion stamp icon 5. |
| Week01/Yido/app/src/main/res/drawable/ic_launcher_background.xml | Adaptive icon background vector. |
| Week01/Yido/app/src/main/res/drawable/ic_launcher_foreground.xml | Adaptive icon foreground vector. |
| Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml | Adaptive launcher icon definition. |
| Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml | Adaptive round launcher icon definition. |
| Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher.webp | Launcher icon bitmap (hdpi). |
| Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp | Round launcher icon bitmap (hdpi). |
| Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher.webp | Launcher icon bitmap (mdpi). |
| Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp | Round launcher icon bitmap (mdpi). |
| Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher.webp | Launcher icon bitmap (xhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp | Round launcher icon bitmap (xhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp | Launcher icon bitmap (xxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp | Round launcher icon bitmap (xxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp | Launcher icon bitmap (xxxhdpi). |
| Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp | Round launcher icon bitmap (xxxhdpi). |
| Week01/Yido/app/src/test/java/com/example/yido/ExampleUnitTest.kt | Default local unit test template. |
| Week01/Yido/app/src/androidTest/java/com/example/yido/ExampleInstrumentedTest.kt | Default instrumented test template. |
| .idea/vcs.xml | IDE VCS mapping config. |
| .idea/modules.xml | IDE module configuration. |
| .idea/misc.xml | IDE project JDK/language level config. |
| .idea/markdown.xml | IDE Markdown plugin settings. |
| .idea/caches/deviceStreaming.xml | IDE cache file containing device streaming selections. |
Files not reviewed (5)
- .idea/caches/deviceStreaming.xml: Language not supported
- .idea/markdown.xml: Language not supported
- .idea/misc.xml: Language not supported
- .idea/modules.xml: Language not supported
- .idea/vcs.xml: Language not supported
You can also share your feedback on Copilot code review. Take the survey.
| for (textView in textViews) { | ||
| textView.setTextColor(Color.BLACK) | ||
| } | ||
|
|
||
| selectedText.setTextColor(color) |
| android:text="오늘 하루는 어땠나요?" | ||
| android:textColor="#000000" | ||
| android:textSize="38sp" |
| android:padding="8dp" | ||
| android:layout_marginStart="16dp" | ||
| android:layout_marginTop="26dp" | ||
| android:src="@drawable/ic_back" |
| <ImageView | ||
| android:id="@+id/ic_face1" | ||
| android:layout_width="44dp" | ||
| android:layout_height="48.4dp" | ||
| android:layout_marginTop="30dp" | ||
| android:src="@drawable/ic_face1" | ||
| app:layout_constraintEnd_toEndOf="parent" | ||
| app:layout_constraintStart_toStartOf="parent" | ||
| app:layout_constraintTop_toBottomOf="@+id/text_description" /> |
| /captures | ||
| .externalNativeBuild | ||
| .cxx | ||
| local.properties |
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <project version="4"> | ||
| <component name="DeviceStreaming"> | ||
| <option name="deviceSelectionList"> | ||
| <list> | ||
| <PersistentDeviceSelectionData> |
|
안녕하세요! 1주차 과제 수행하시느라 고생 많으셨습니다💚 총평ViewBinding을 활용해 전반적으로 코드가 깔끔하고, 감정 선택도 단일 선택 UX로 잘 구현하셨습니다. 1. ConstraintLayout (배치 방식)activity_main.xml은 각 뷰를 이전 요소의 bottom ↔ 다음 요소의 top으로 연결해서 위에서 아래로 내려오는 연속 배치 구조로 잘 작성되어 있습니다. 2. Chain현재 XML에는 app:layout_constraintVertical_chainStyle 같은 설정이 없어서, 뷰들이 체인으로 묶여 있지는 않습니다. 3. Kotlin 코드selectEmotion()에서 전체 텍스트 색을 먼저 초기화한 뒤 선택한 텍스트만 색을 바꾸는 방식이라 선택이 누적되지 않고 단일 선택이 잘 동작합니다. 👍 (선택 개선) 추가로 ViewBinding을 사용했다면 buildFeatures { viewBinding true }가 Gradle에 켜져 있는지도 함께 확인해 주세요! 코드 리뷰 확인해보시고 궁금한 점 있으면 언제든지 말씀해주세요! |
📝 미션 번호
1주차 Misson 1, 2, 3
📋 구현 사항
감정 우표 단일 화면 UI 구현
감정 우표 아이콘 클릭 시 해당 아이콘 하단 텍스트만 색상이 변경되도록 구현
선택된 감정만 강조되도록 처리하고 다른 텍스트는 기본 색상 유지
📎 스크린샷
✅ 체크리스트
🤔 질문 사항