๐Ÿ”ฅTIL๐Ÿ”ฅ์ŠคํŒŒ๋ฅดํƒ€ | ์ง€์—ฐ ์ดˆ๊ธฐํ™”

hyihyiยท2023๋…„ 11์›” 21์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
2/70
post-thumbnail

๋กœ๋˜ ์ƒ์„ฑ๊ธฐ

1. ์ง€์—ฐ ์ดˆ๊ธฐํ™”(lazyinitialization)

: ํ•„๋“œ์˜ ์ดˆ๊ธฐํ™” ์‹œ์ ์„ ๊ทธ ๊ฐ’์ด ์ฒ˜์Œ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ๋Šฆ์ถ”๋Š” ๊ธฐ๋ฒ•

๋ณดํ†ต class ์ƒ์„ฑ ์‹œ ๋ณ€์ˆ˜๋„ ํ•จ๊ป˜ ์ƒ์„ฑ๋˜๋Š”๋ฐ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊ผญ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด class๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ดˆ๊ธฐํ™”๋˜๋Š” ๋ณ€์ˆ˜ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก๋ฉด์—์„œ ์†ํ•ด๋ฅผ ๋งŽ์ด ๋ณด๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์ˆœ๊ฐ„๊นŒ์ง€ ์ดˆ๊ธฐํ™”๋ฅผ ์ตœ๋Œ€ํ•œ ๋ฏธ๋ค„ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ์‹คํ–‰ ์‹œ๊ฐ„์—์„œ ์ด๋“์„ ๋ณด๊ธฐ ์œ„ํ•ด ์ง€์—ฐ ์ดˆ๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


โ—ํ•˜์ง€๋งŒ ์ง€์—ฐ ์ดˆ๊ธฐํ™”๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ž

ํด๋ž˜์Šค ํ˜น์€ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ์˜ ์ดˆ๊ธฐํ™” ๋น„์šฉ์€ ์ค„์ง€๋งŒ, ์ง€์—ฐ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ•„๋“œ์— ์ ‘๊ทผํ•˜๋Š” ๋น„์šฉ์€ ์ปค์ง„๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ์ผ๋ฐ˜์ ์ธ ์ดˆ๊ธฐํ™”๊ฐ€ ์ง€์—ฐ ์ดˆ๊ธฐํ™”๋ณด๋‹ค ๋‚ซ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฐฐ์› ๋Š”๋ฐ ์ด๋Ÿฐ ์ง€์—ฐ ์ดˆ๊ธฐํ™”์—๋„ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์—ˆ๋‹ค. ํ•„๋“œ์— ์ ‘๊ทผํ•˜๋Š” ๋น„์šฉ์€ ์ปค์ง„๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์•„์ง์€ ์ดํ•ด๋ฅผ ๋ชปํ•˜๊ฒ ๋‹ค.

์ฝ”๋“œ์—์„œ lazy์˜ ์‚ฌ์šฉ

<MainActivity.kt>

private val clearButton by lazy {findViewById<Button>(R.id.btn_clear)}
private val addButton by lazy {findViewById<Button>(R.id.btn_add)}
private val runButton by lazy {findViewById<Button>(R.id.btn_run)}
private val numPick by lazy {findViewById<NumberPicker>(R.id.np_num)}

2. app:layout_constraintHorizontal_chainStyle="packed"

-> ๊ฐ€์šด๋ฐ ์ •๋ ฌ
์š”์†Œ๊ฐ€ 3๊ฐœ๋ผ๋ฉด 3๊ฐœ ์ค‘ ํ•˜๋‚˜์—๋งŒ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์ฝ”๋“œ์—์„œ chainStyle์˜ ์‚ฌ์šฉ

<NumberPicker
        android:id="@+id/np_num"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:solidColor="#0E5D27"
        android:background="#8BC34A"
        app:layout_constraintEnd_toStartOf="@+id/iv_left"
        app:layout_constraintHorizontal_bias="0.5"
        //์„ธ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์—๋งŒ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค. 
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_title" />

    <ImageView
        android:id="@+id/iv_left"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginStart="16dp"
        android:src="@drawable/ic_left"
        app:layout_constraintBottom_toBottomOf="@+id/np_num"
        app:layout_constraintEnd_toStartOf="@+id/btn_add"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/np_num"
        app:layout_constraintTop_toTopOf="@+id/np_num" />


    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:text="๋ฒˆํ˜ธ ์ถ”๊ฐ€ํ•˜๊ธฐ"
        app:layout_constraintBottom_toBottomOf="@+id/iv_left"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/iv_left"
        app:layout_constraintTop_toTopOf="@+id/iv_left" />

3. app:layout_constraintHorizontal_bias="0.5"

-> 0.5, 0.5 ์ฃผ๋ฉด ๋ฐ˜๋ฐ˜์œผ๋กœ ๋‚˜๋‰œ๋‹ค

ํ•ด๋‹น ๋ทฐ๊ฐ€ ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ์–ด๋Š ์ •๋„์˜ ์œ„์น˜์— ๋ฐฐ์น˜๋ ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ 0์—์„œ 1๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์€ 0.5์ด๋‹ค.

  • ๊ฐ’์ด 0์ด๋ฉด ๋ทฐ๋Š” ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜๋œ๋‹ค.
  • ๊ฐ’์ด 1์ด๋ฉด ๋ทฐ๋Š” ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์˜ ๋ ๋ถ€๋ถ„์— ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜๋œ๋‹ค.
  • ๊ฐ’์ด 0.5์ด๋ฉด ๋ทฐ๋Š” ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์˜ ์ค‘๊ฐ„์— ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜๋œ๋‹ค.

์ฝ”๋“œ์—์„œ bias์˜ ์‚ฌ์šฉ

<Button
        android:id="@+id/btn_run"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginBottom="16dp"
        android:text="์ž๋™ ์ƒ์„ฑ ์‹œ์ž‘"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/btn_clear"
        app:layout_constraintHorizontal_bias="0.5" //bias
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/btn_clear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="16dp"
        android:text="์ดˆ๊ธฐํ™”"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5" //bias
        app:layout_constraintStart_toEndOf="@+id/btn_run" />
profile
๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์“ฐ๋Š” ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€