DroidKnights2021 App

Overview

๐Ÿšง ๐Ÿšง ๐Ÿšง ๐Ÿ‘ฉโ€๐Ÿ’ป ๐Ÿ‘จโ€๐Ÿ’ป DroidKnights2021 App ๐Ÿ‘จโ€๐Ÿ’ป ๐Ÿ‘ฉโ€๐Ÿ’ป ๐Ÿšง ๐Ÿšง ๐Ÿšง

๋“œ๋กœ์ด๋“œ๋‚˜์ด์ธ ๋Š” ๊ธฐ์ˆ  ์„ธ์…˜์œผ๋กœ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์ปจํผ๋Ÿฐ์Šค ์ž…๋‹ˆ๋‹ค.

Guide

Contributions Welcome!

๋“œ๋กœ์ด๋“œ๋‚˜์ด์ธ  ํ–‰์‚ฌ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์ฐธ์—ฌ๋กœ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๊ธธ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค!

์ž์„ธํ•œ ๋‚ด์šฉ์€ CONTRIBUTING.md ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

Development

Required

  • IDE : Android Studio Arctic Fox
  • JDK : Java 11์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JDK
    • (๊ถŒ์žฅ) Android Studio ์„ค์น˜์‹œ Embeded๋œ JDK (Open JDK)
    • Java 11์„ ์‚ฌ์šฉํ•˜๋Š” JDK (Open JDK, AdoptOpenJDK, GraalVM)
  • Kotlin Language : 1.5.10

Language

  • Kotlin

Libraries

  • AndroidX
    • Activity & Activity Compose
    • AppCompat
    • Core
    • ConstraintLayout
    • Fragment
    • Lifecycle & ViewModel Compose
    • Navigation
    • RecyclerView
  • Google Android Material
  • Kotlin Libraries (Coroutine, DateTime, Serialization)
  • Compose (1.0.0 or higher)
  • Coil & Coil-compose
  • Dagger & Hilt
  • Accompanist (FlowLayout, Pager)
  • Square (Retrofit, OkHttp)
  • Timber

Architecture

Layer

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Layered Architecture ํ˜•ํƒœ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Presentation/Domain/Data ๋ ˆ์ด์–ด ๊ตฌ์กฐ๋ฅผ ๋„๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Module

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Multi-module ๊ตฌ์กฐ์ด๋ฉฐ ๊ฐ Feature๋งˆ๋‹ค ๋ชจ๋“ˆ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

DI Graph

DI Graph (Layer)

Thanks

์ฐธ์—ฌํ•ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Trouble Shooting

Android Studio Arctic fox์—์„œ JDK 11์ด ํ•„์š”ํ•จ

Arctic fox๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜๋Š” AGP 7.0์€ JDK 11์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ JDK๊ฐ€ Java 11์„ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

Android Studio Arctic fox์—์„œ ์˜์–ด ์ด์™ธ์˜ ์–ธ์–ด๊ฐ€ ๊นจ์ ธ์„œ ๋…ธ์ถœ๋จ

Android Studio IDE์˜ ์ผ๋ถ€ ๋ฉ”๋‰ด(Git ํƒญ, Preference ๋“ฑ)์—์„œ๋Š” ์˜์–ด ์ด์™ธ์˜ ์–ธ์–ด๊ฐ€ ํฐํŠธ๊ฐ€ ๊นจ์ง„ ์ƒํƒœ๋กœ ๋ Œ๋”๋ง๋˜๋Š” ํ˜„์ƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (tofu-ing)

  • ํ•ด๊ฒฐ๋ฒ• : Preferences | Appearance & Behavior | Appearance์—์„œ Use custom font๋ฅผ ์ฒดํฌํ•œ ํ›„ ๋ณ„๋„ ํฐํŠธ๋ฅผ ์„ ํƒ
Comments
  • [feature/#2] [ํ™ˆํƒญ] ์Šคํฐ์„œ ์ž๋™ ์Šคํฌ๋กค

    [feature/#2] [ํ™ˆํƒญ] ์Šคํฐ์„œ ์ž๋™ ์Šคํฌ๋กค

    Issue

    • close #2

    Overview (Required)

    • ~๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๊ฐ€ ๊ถ๊ธˆํ•œ ์ ๋“ค์ด ์žˆ์–ด, ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ณ ์ž ๋จผ์ € PR์„ ๋‚ ๋ฆฌ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.~
    • ~Question~
      • ~1. BindingAdapter ๋‚ด์—์„œ suspend ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž CoroutineScope์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ Dispatchers.Main.immediate์„ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” Fragment์˜ View๊ฐ€ destroy ๋˜์–ด๋„ ํ•จ์ˆ˜๊ฐ€ ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ์ •์ƒ์ ์ธ ์ž‘๋™์ด ๋ณด์žฅ๋˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ findViewTreeLifecycleOwner()?.lifecycleScope์„ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ์œผ๋‚˜ findViewTreeLifecycleOwner๊ฐ€ null์ด ๋‚˜์˜ค๋”๊ตฐ์š”. Fragment์˜ ๋ทฐ๊ฐ€ ๋‹ค ๋งŒ๋“ค์กŒ๋Š”๋ฐ RecyclerView์˜ ViewTreeLifecycleOwner๊ฐ€ Null์ด ๋œจ๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ๋ฅผ ํ–ˆ๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์›์ธ์ด ์ดํ•ด๊ฐ€ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ๋กœ๋Š” View์˜ parent๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ Null์ด ์•„๋‹Œ LifecycleOwner๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.~
      • ~2. ์œ„์˜ ๋ฌธ์ œ๋กœ ์ธํ•ด Fragment์˜ LifecycleScope์„ ๋ฐ”์ธ๋”ฉ ์–ด๋Œ‘ํ„ฐ ๋ถ€๋ถ„์— ์ฃผ์ž…์„ ํ•˜์˜€๋Š”๋ฐ, Fragment์˜ onDestroyView๊ฐ€ ํ˜ธ์ถœ๋œ ์ดํ›„์—๋Š” LifecycleScope๊ฐ€ null์ด ๋ ํ…๋ฐ ์ด ๋•Œ๋ฌธ์— NullPointerExcpetion์ด ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ ์ œ ์˜ˆ์ƒ์ด ๋งž์€๊ฐ€์š”?~
      • ~3. ์ด์Šˆ์— ์ฃผ์‹  ๋งํฌ๋ฅผ ๋ณด์•˜๋Š”๋ฐ ComposeView๋ฅผ ๊ธฐ์กด ํŒจํ„ด์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” onCreateViewHolder์™€ onBindViewHolder๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ListBindingAdapter ๋Œ€์‹  ComposeAdapter, ComposeViewHolder์™€ ๊ฐ™์€ Util Adapter๋ฅผ ์ œ์ž‘ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ์–ด๋–ค์ง€ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.~
        @Nullable
        public static LifecycleOwner get(@NonNull View view) {
            LifecycleOwner found = (LifecycleOwner) view.getTag(R.id.view_tree_lifecycle_owner);
            if (found != null) return found;
            ViewParent parent = view.getParent();
            while (found == null && parent instanceof View) {
                final View parentView = (View) parent;
                found = (LifecycleOwner) parentView.getTag(R.id.view_tree_lifecycle_owner);
                parent = parentView.getParent();
            }
            return found;
        }
    

    ~Updated 21/08/28~

    • ~์•„๋ž˜์˜ ์ด์Šˆ๋งŒ ํ•ด๊ฒฐ์ด ๋œ๋‹ค๋ฉด ๋จธ์ง€๋ฅผ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.~ ~Q) NetworkImage ํด๋ž˜์Šค์—์„œ rememberImagePainter๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ๊ฐ€ ๋˜์ง€ ์•Š๊ณ  painter.state๊ฐ€ ํ•ญ์ƒ empty๊ฐ€ ๋˜๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ์—๋Š” ์ด๋ฏธ์ง€ ๋กœ๋“œ๊ฐ€ ์ž˜ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.~
    • ~๋กœ๊น…์„ ํ•ด๋ดค์„ ๋•Œ painter.request์˜ dispatcher๊ฐ€ Dispatchers.IO๋กœ ๋˜์–ด์žˆ์–ด์„œ~
    internal fun NetworkImage(
        imageUrl: String,
        nonSuccessTintColor: Color,
        modifier: Modifier = Modifier,
        builder: ImageRequest.Builder.() -> Unit = {
            placeholder(R.drawable.ic_android_white)
            error(R.drawable.ic_android_white)
            dispatcher(Dispatchers.Main.Immediate)
        },
    )
    

    ~๋กœ๋„ ๋ณ€๊ฒฝ์„ ํ•ด๋ณด์•˜์œผ๋‚˜ ์ด ์—ญ์‹œ ์‹คํ–‰์ด ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.~ ~๋””๋ฒ„๊ทธ๋ฅผ ํ•ด๋„ ๊ฐ์ด ์žกํžˆ์ง€ ์•Š์•„์„œ ์งˆ๋ฌธ๋“œ๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ™๐Ÿป @Pluu~

    Links

    • ComposeAdapter ์ฐธ๊ณ ์ž๋ฃŒ: https://github.com/android/sunflower/blob/compose_recyclerview/app/src/main/java/com/google/samples/apps/sunflower/adapters/PlantAdapter.kt

    Screenshot 2021.09.26 UPDATED

    Before | After :--: | :--: |

    opened by l2hyunwoo 11
  • [์Šค์ผ€์ฅด] ์„ธ์…˜ ๋…ธ์ถœ ์ˆœ์„œ ๊ฐœ์„ 

    [์Šค์ผ€์ฅด] ์„ธ์…˜ ๋…ธ์ถœ ์ˆœ์„œ ๊ฐœ์„ 

    Kind (Required)

    • Improvement

    Overview (Required)

    • ์„ธ์…˜ ๋…ธ์ถœ์€ ์‹œ๊ฐ„-์„ธ์…˜๋ช… ์ˆœ์„œ๋Œ€๋กœ ๋…ธ์ถœ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค

    Current

    • ํ˜„์žฌ ์„ธ์…˜ ๋ฆฌ์ŠคํŠธ๋Š” json์— ์ €์žฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    | ์ฐธ๊ณ  ์ž๋ฃŒ | ์ฐธ๊ณ  ์ž๋ฃŒ | | :---: | :---: | | device-2021-08-07-131845 | device-2021-07-26-234914 |

    Links

    • https://github.com/droidknights/DroidKnights2021_App/blob/main/domain/src/main/java/com/droidknights/app2021/domain/usecase/session/GetSessionsUseCase.kt#L28
    • https://github.com/droidknights/DroidKnights2021_App/blob/main/app/src/main/assets/sessions.json#L12
    enhancement 
    opened by Pluu 6
  • ์ค‘๋ณต๋œ ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์ • clean up

    ์ค‘๋ณต๋œ ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์ • clean up

    Issue

    • close #34

    Overview (Required)

    • ๋™์ผํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์ •์ด ๋นŒ๋“œ์Šคํฌ๋ฆฝํŠธ์— ์ค‘๋ณต๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๊ณณ์œผ๋กœ ๋ชจ์•„๋‘๋Š” ๊ฒƒ์ด ์ถ”ํ›„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • ํ˜„์žฌ kotlin DSL์€ ์•„์ง ๊ฐœ๋ฐœ์ค‘์ด๋ฉฐ, API๋“ค์ด ์ œ๋Œ€๋กœ ๋…ธ์ถœ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Groovy DSL์„ ์ด์šฉํ•ด์„œ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

    Links

    • https://developer.android.com/studio/releases/gradle-plugin-roadmap
    opened by ganadist 4
  • [feature/#3] [ํ™ˆํƒญ] ์˜ฌํ•ด ํ–‰์‚ฌ ์ผ์ž ๋ฌธ๊ตฌ ๋…ธ์ถœ ์ˆ˜์ •

    [feature/#3] [ํ™ˆํƒญ] ์˜ฌํ•ด ํ–‰์‚ฌ ์ผ์ž ๋ฌธ๊ตฌ ๋…ธ์ถœ ์ˆ˜์ •

    Issue

    • close #3

    Overview (Required)

    • TextView์— Date๋งŒ ๋œฐ ์ˆ˜ ์žˆ๋„๋ก BindingAdapter ๋ณ€๊ฒฝ
    • ์ด๋•Œ, isEndEvent๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์•„ parameter ์‚ญ์ œ

    Screenshot

    Before | After :--: | :--: |

    opened by l2hyunwoo 3
  • [ํ™ˆํƒญ] ์Šคํฐ์„œ ์ž๋™ ์Šคํฌ๋กค

    [ํ™ˆํƒญ] ์Šคํฐ์„œ ์ž๋™ ์Šคํฌ๋กค

    Kind (Required)

    • Improvement

    Overview (Required)

    • ์Šคํฐ์„œ ์˜์—ญ์ด ์ž๋™ ์Šคํฌ๋กค์ด ์ง€์›๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ž๋™ ์Šคํฌ๋กค ๋ฐฉํ–ฅ์€ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ํ๋ฅด๊ธฐ๊ฐ€ ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค
    • (Option) ํ•ด๋‹น ์˜์—ญ์„ Compose๋กœ ๊ฐœ์„ 
      • (Required) ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” RecyclerView.Adapter ๋ฐ ViewHolder ํŒจํ„ด์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค

    device-2021-07-21-232205

    Link

    • https://developer.android.com/jetpack/compose/interop/compose-in-existing-ui
    • https://proandroiddev.com/infinite-auto-scrolling-lists-with-recyclerview-lazylists-in-compose-1c3b44448c8
    help wanted compose 
    opened by Pluu 3
  • [ํ™ˆํƒญ] ์Šคํฐ์„œ/์ด๋ฒคํŠธ ํด๋ฆญ์‹œ ์•ฑ๋‚ด์—์„œ ์›น๋ทฐ๋ฅผ ๋…ธ์ถœ

    [ํ™ˆํƒญ] ์Šคํฐ์„œ/์ด๋ฒคํŠธ ํด๋ฆญ์‹œ ์•ฑ๋‚ด์—์„œ ์›น๋ทฐ๋ฅผ ๋…ธ์ถœ

    Issue

    • close #4

    Overview (Required)

    • Chrome Custom Browser ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€
    • Context ํ™•์žฅํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ string์„ ๋ฐ›์•„ ์›น๋ทฐ๋ฅผ ๋„์šฐ๋„๋ก ์ฝ”๋“œ ๊ตฌํ˜„
    • ๊ธฐ์กด ์•„๋‹ตํ„ฐ์—์„œ ํ˜ธ์ถœ๋˜๋˜ ์ฝ”๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

    Links

    • https://mvnrepository.com/artifact/androidx.browser/browser/1.3.0

    Screenshot

    Before | After :--: | :--:

    https://user-images.githubusercontent.com/27615921/130397875-fa16fccd-6302-4606-8095-45a804e07c97.mp4

    https://user-images.githubusercontent.com/27615921/130397883-b40e830e-57f9-40a1-b965-f875c1739dd1.mp4

    opened by kts6056 2
  • Gradle kotlin DSL

    Gradle kotlin DSL

    Issue

    • close #24

    Overview (Required)

    • gradle kotlin dsl๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • arctic fox 2020.3.1 ์—์„œ ์ •์ƒ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ดˆ ์ ์šฉ๋•Œ๋Š” ์ผ๋ถ€ ์—๋Ÿฌํ‘œ์‹œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ์บ์‹œ ์‚ญ์ œ ๋ฅผ ํ•œ๋ฒˆ๋งŒ ์ง„ํ–‰ํ•˜๋ฉด ์ดํ›„๋กœ๋Š” ๊ดœ์ฐฎ์•˜์Šต๋‹ˆ๋‹ค.
    • ๋ณ€๊ฒฝ์ ์ด ๋งŽ์•„์„œ file change ์ธ์‹์ด ์•ˆ๋˜์–ด์„œ ์ปค๋ฐ‹์„ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์ ์€ fed3ea9 ๋กœ ๋ชฐ์•„๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.
    • jcenter์— ๊ด€ํ•œ ๋‚ด์šฉ์ด ๋‚จ์•„์žˆ์–ด์„œ ์ง€์› ์Šต๋‹ˆ๋‹ค.
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์˜ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ์ง€์› ์Šต๋‹ˆ๋‹ค.

    Links

    opened by zmunm 2
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Qualifier ์ œ๊ฑฐ

    ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Qualifier ์ œ๊ฑฐ

    Kind (Required)

    • Other

    Overview (Required)

    • ์ •์˜๋˜์—ˆ์ง€๋งŒ, ์‚ฌ์šฉํ•˜์ง€์•Š๋Š” Qualifier๋Š” ์‚ญ์ œํ•ด์•ผํ•˜๋Š” ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

    Links

    • https://github.com/droidknights/DroidKnights2021_App/blob/main/shared/src/main/java/com/droidknights/app2021/shared/di/CoroutinesQualifiers.kt#L23
    good first issue 
    opened by Pluu 2
  • [feature/#1] [ํ™ˆํƒญ] ์•ˆ๋“œ๋กœ์ด๋“œ ์•„์ด์ฝ˜ ๋…ธ์ถœ ๊ฐœ์„ 

    [feature/#1] [ํ™ˆํƒญ] ์•ˆ๋“œ๋กœ์ด๋“œ ์•„์ด์ฝ˜ ๋…ธ์ถœ ๊ฐœ์„ 

    Issue

    • close #1

    Overview (Required)

    • ImageView๋ฅผ Material ShapeableImageView๋กœ ๋ณ€ํ™˜
    • app:shapeAppearanceOverlay attribute์— corner ์†์„ฑ์„ ์ ์šฉ

    Screenshot

    Before | After :--: | :--: |

    opened by l2hyunwoo 2
  • [KSerializer] json์„ DTO๋กœ ๋งŒ๋“ค๋•Œ์˜ ์ง๋ ฌํ™” ๊ฐœ์„ 

    [KSerializer] json์„ DTO๋กœ ๋งŒ๋“ค๋•Œ์˜ ์ง๋ ฌํ™” ๊ฐœ์„ 

    Kind (Required)

    • Improvement

    Overview (Required)

    • json์— ์žˆ๋Š” ํŠธ๋ž™์ •๋ณด๋Š” String์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด DTO ๋ณ€ํ™˜์‹œ ๊ฐ’์— ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์œ ์—ฐํ•œ ๋Œ€์‘์„ ์œ„ํ•ด์„œ ์ง๋ ฌํ™” ๊ฐœ์„ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • (Required) Track1, track1์€ Room.Track1์œผ๋กœ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค.
    • (Required) ํŠธ๋ž™์ •๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งค์นญ๋˜์ง€ ์•Š์„์‹œ Room.Etc๋กœ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค.

    Links

    • KSerializer ์‚ฌ์šฉ
      • https://github.com/Kotlin/kotlinx.serialization/blob/master/guide/example/example-builtin-03.kt#L11
      • https://github.com/Kotlin/kotlinx.serialization/blob/master/core/commonMain/src/kotlinx/serialization/builtins/LongAsStringSerializer.kt
    • DTO ์ •๋ณด : https://github.com/droidknights/DroidKnights2021_App/blob/main/data/src/main/java/com/droidknights/app2021/data/model/SessionData.kt#L22
    • Room ์ •๋ณด : https://github.com/droidknights/DroidKnights2021_App/blob/main/shared/src/main/java/com/droidknights/app2021/shared/Domain.kt#L20
    enhancement 
    opened by Pluu 2
  • [์Šค์ผ€์ฅด] ํŠธ๋ž™ ๋…ธ์ถœ ์ˆœ์„œ ๊ฐœ์„ 

    [์Šค์ผ€์ฅด] ํŠธ๋ž™ ๋…ธ์ถœ ์ˆœ์„œ ๊ฐœ์„ 

    Kind (Required)

    • Improvement

    Overview (Required)

    • ํŠธ๋ž™ ์ˆœ์„œ๋Š” Track1 > Track2 > Etc ์ˆœ์„œ๋กœ ๋…ธ์ถœ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    • ํ˜„์žฌ๋Š” ํŠธ๋ž™์ด ๋…ธ์ถœ๋˜๋Š” ์ˆœ์„œ๋Š” json์— track์ด ์ €์žฅ๋œ ์ˆœ์„œ์— ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

    Info

    • ์„ธ์…˜์˜ ํŠธ๋ž™ ์ •๋ณด : https://github.com/droidknights/DroidKnights2021_App/blob/main/app/src/main/assets/sessions.json#L80
    • (Required) json์˜ ์ˆœ์„œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

    Current

    Links

    • https://github.com/droidknights/DroidKnights2021_App/blob/main/features/schedule/src/main/java/com/droidknights/app2021/schedule/ScheduleScreen.kt#L32
    enhancement compose 
    opened by Pluu 2
  • ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋…ธ์ถœ ๊ฐœ์„ 

    ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋…ธ์ถœ ๊ฐœ์„ 

    Kind (Required)

    • Other

    Overview (Required)

    • ์ผ๋ถ€ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋Š” ์›ํ˜•์œผ๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ , ์ขŒ์šฐ๊ฐ€ ์ž˜๋ฆฐ ํ˜•ํƒœ๋กœ ๋…ธ์ถœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ”„๋กœํ•„๋กœ ๋…ธ์ถœ๋˜๋Š” ์ด๋ฏธ์ง€๋Š” ์›ํ˜• ํ˜•ํƒœ๋กœ ๋…ธ์ถœ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

    | Screenshot | Screenshot | | :--: | :--: | | device-2021-08-08-200007 | device-2021-08-08-200027 |

    help wanted compose 
    opened by Pluu 4
Releases(0.0.1)
Owner
DroidKnights
Seoul Korea's DroidKnights
DroidKnights
Arjun Naik 1 Apr 16, 2022
Library to change Android launcher App Icon and App Name programmatically !

AppIconNameChanger Change Android App launcher Icon and App Name programmatically ! Download Demo APK from HERE Kindly use the following links to use

Prabhakar Thota 587 Dec 29, 2022
The app has got fullscreen Turkey map via Huawei Map. App selects random province and shows it borders on the map than user will try to guess the provinces name.

Il Bil App Introduction I will introduce you to how to implement Account Kit, Map Kit, Game Service. About the game: The app has got fullscreen Turkey

Gรถkhan YILMAZ 4 Aug 2, 2022
HideDroid is an Android app that allows the per-app anonymization of collected personal data according to a privacy level chosen by the user.

HideDroid An Android App for preserving user privacy HideDroid is an Android app that allows the per-app anonymization of collected personal data acco

null 100 Dec 12, 2022
Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.

Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.

Dheeraj Gupta 5 Dec 24, 2022
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

MindOrks 1.2k Dec 29, 2022
Water tracker app helps you with daily reminder to drink water. This app is just a trial to test and improve my android development skills.

?? About Me I am a self-thaught developer learning web and android development. This app is just a trial to test and improve my android development sk

Sinan Sonmez (Chaush) 28 Dec 17, 2022
Visual Studio App Center Sample App for Android

Visual Studio App Center Sample App for Android The Android application in this repository and its corresponding tutorials will help you quickly and e

Yourhomeplan 1 Oct 13, 2021
Small app to demonstrate app modularization combined with clean architecture

Football Hightlights Sample Sample project, exploring the app Modularization in combination with some concepts of the clean architecture, in particula

null 1 Oct 31, 2021
Android app for Ribbit, Broker API Reference App

Ribbit Reference Implementation (Android) The reference implementation for designing the Android user interface of a broker-dealer trading application

Alpaca 12 Nov 24, 2022
Kalam is an app that gives people a chance to write their stories on the app.

Kalam is an app that gives people a chance to write their stories on the app. This app gives a good story for the story readers and gives good story writers a chance to write their own story

Uday Chugh 0 Apr 26, 2022
Android-Java-App - Notepad app with user and password. SQL Lite

DVNote2 App Android-Java-App Notepad app with user and password Application made in Android Studio with Java language and SQLite database. How does it

DViga 1 Nov 6, 2021
Olalekan Fagbemi 0 Nov 7, 2021
Android Bitcoin market app base on Jetpack Compose and MVI. The app displays current bitcoin market price and history price k-line charts.

compose-bitcoin Android Bitcoin market app base on Jetpack Compose and MVVM & MVI. Features Current bitcoin market price. K-line charts of history pri

Chen Pan 3 May 20, 2022
This app contains feature barcode and QR scanner, and video recording in-app.

BarcodeQRScannerAndVideoRecord This app contains feature barcode and QR scanner, and video recording in-app. Scanner using ML Kit and CameraX. Video R

Abdullah Fahmi 1 Dec 23, 2021
App Tragos: a clean architecture app example

CocktailApp This is a clean architecture app example built with Coroutines MVVM Extension Functions Dagger Hilt Retrofit Room Navigation Components Ca

Axel-Aranibar 1 Jun 23, 2022
App for lesson 8 of the Android App Development in Kotlin course on Udacity

Connect to the Internet - Mars Real Estate This is the toy app for Lesson 8 of t

Michael Pessoni 1 Dec 28, 2021
Android Camper parking app written in kotlin for assignment 2 of Mobile App Development

Technical Report Splash view Application shows a splash screen when opened. The

Alvaro Sanchez Domingo 1 Sep 9, 2022
Android-basics-kotlin-tip-time-app - Tip Time app from Android Basics in Kotlin

Tip Time Tip Time app from Android Basics in Kotlin at developers.google.com. It

Ramon Lima e Meira 0 Jan 2, 2022