[Android TIL] 240321 (์•ฑ๊ฐœ๋ฐœ ์ž…๋ฌธ ๊ฐ•์˜ ์™„๊ฐ•, ๊ฐœ์ธ ๊ณผ์ œ ๊ตฌํ˜„, ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ ์ˆ˜์ •)
๋ฐ˜์‘ํ˜•

 

 

 

 

 

~ Today I Learned ~

 

โœ”๏ธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด (๋‚ด์ )
โœ”๏ธ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ๊ฐœ๋ฐœ ์ž…๋ฌธ ๊ฐ•์˜ 4์ฃผ์ฐจ ์™„๊ฐ• ๋ฐ ์ •๋ฆฌ
โœ”๏ธ ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ ์ˆ˜์ • (์ œ๋ชฉ ํ•œ ์ค„ ์ถœ๋ ฅ)
โœ”๏ธ ๊ฐœ์ธ ๊ณผ์ œ ์ผ๋ถ€ ๊ตฌํ˜„

X๊ณ„ํš์‹คํŒจX ํ‚ค์˜ค์Šคํฌ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง

 

 

 

 


 

 

 

 

1. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด (๋‚ด์ )

 

 

[Kotlin] ๋‚ด์  (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜)

๋ฌธ์ œ https://school.programmers.co.kr/learn/courses/30/lessons/70128 ์„ฑ๊ณต ์ฝ”๋“œ class Solution { fun solution(a: IntArray, b: IntArray): Int { val length = a.size - 1 var sum = 0 for(i in 0 .. length){ sum += a[i] * b[i] } return sum } } ์„ค๋ช… val le

limheejin.tistory.com

  • zip์„ ์ด์šฉํ•œ ํ’€์ด๊ฐ€ ์ธ์ƒ์ ์ด์—ˆ๋‹ค.

 

๐Ÿ’ก zip

val list1 = listOf("a", "b", "c")
val list2 = listOf(1, 2, 3)
val zipped = list1.zip(list2)
println(zipped) // ์ถœ๋ ฅ: [(a, 1), (b, 2), (c, 3)] ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
  • ๋‘ ๊ฐœ์˜ ์ปฌ๋ ‰์…˜์„ ์Œ์œผ๋กœ ๋ฌถ์–ด์ค€๋‹ค.
  • ๊ฐ ์ปฌ๋ ‰์…˜์—์„œ ๋™์ผํ•œ ์ธ๋ฑ์Šค ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ๋“ค๋ผ๋ฆฌ ํŽ˜์–ด(pair)๋ฅผ ๋งŒ๋“ค์–ด ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

๐Ÿ’กmap

val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // ์ถœ๋ ฅ: [1, 4, 9, 16, 25]
  • ๊ฐ ์š”์†Œ๋ฅผ ์ฃผ์–ด์ง„ ๋žŒ๋‹ค ํ•จ์ˆ˜์— ์ ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•œ๋‹ค.
  • ๊ธฐ์กด ์ปฌ๋ ‰์…˜์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋žŒ๋‹ค ํ•จ์ˆ˜๊ฐ€ ์ ์šฉ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ ์ƒˆ๋กœ์šด ์ปฌ๋ ‰์…˜์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐Ÿ’ก.indices

val list = listOf("a", "b", "c")
for (i in list.indices) {
    println("Index $i: ${list[i]}")
}
  •  ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน๋ณ„ํ•œ ํ”„๋กœํผํ‹ฐ
  • ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒ”์œ„(Range)๋ฅผ ์ œ๊ณต
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    (for ๋ฃจํ”„์—์„œ ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜, ์ปฌ๋ ‰์…˜์˜ ์ผ๋ถ€ ์š”์†Œ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ)

 

 

 

 

 

 

2. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ๊ฐœ๋ฐœ ์ž…๋ฌธ ๊ฐ•์˜ 4์ฃผ์ฐจ ์™„๊ฐ• ๋ฐ ์ •๋ฆฌ

 

[Android ๊ธฐ์ดˆ] 6. ์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ, ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์—ฐ๊ฒฐ ๋ฐ ๋“ฑ๋ก

์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ(Component) ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฃผ๋กœ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ ์ด๋“ค์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ๊ณผ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ

limheejin.tistory.com

 

[Android ๊ธฐ์ดˆ] 7. Intent์˜ ๊ฐœ๋…๊ณผ ์ข…๋ฅ˜(๋ช…์‹œ/์•”์‹œ), ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

์ธํ…ํŠธ (Intent) ์ธํ…ํŠธ(Intent)๋Š” ์ผ์ข…์˜ ๋ฉ”์‹œ์ง€ ๊ฐ์ฒด ์ธํ…ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ์•ฑ ๊ตฌ์„ฑ์š”์†Œ(์•กํ‹ฐ๋น„ํ‹ฐ, ์„œ๋น„์Šค, ๋ธŒ๋กœ๋“œ ์บ์ŠคํŠธ๋ฆฌ์‹œ๋ฒ„)๋กœ ์ž‘์—…์„ ์š”์ฒญ ์ธํ…ํŠธ ์œ ํ˜• 1) ๋ช…์‹œ์  ์ธํ…ํŠธ(Explicit Intent) ํŠน์ •ํ•œ

limheejin.tistory.com

 

[Android ์ž…๋ฌธ] ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ (Activity Lifecycle)

์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ˆ˜๋ช… - onCreate() ํ˜ธ์ถœ ~ onDestroy() ํ˜ธ์ถœ ์‚ฌ์ด onCreate() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋ ˆ์ด์•„์›ƒ ์„ค์ • ๋“ฑ์„ ์ˆ˜ํ–‰ onDestroy() : ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‘ ํ•ด์ œ

limheejin.tistory.com

 

  • ์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ(Activity, Service, Broadcast Receiver, Content Provider)
  • Activity ๊ฐœ๋…
  • Activity ๋“ฑ๋ก(AndroidManifest.xml) ๋ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์—ฐ๊ฒฐ(setContentView())
  • Intent ๊ฐœ๋… ๋ฐ ์œ ํ˜•(Explicit Intent, Implicit Intent)
  • Intent ์‚ฌ์šฉ๋ฒ•
  • Activity ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ (putExtra, getExtra)
  • ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ (onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()

 

์ธํ…ํŠธ๋ฅผ ๋น„๋กฏํ•˜์—ฌ ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ๋“ค์„ ๋งŽ์ด ๋ฐฐ์› ๋‹ค. ํ”„๋กœ์ ํŠธ์— ๋งŽ์ด ์‘์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

 

 

 

 

 

3. ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ ์ˆ˜์ • (์ œ๋ชฉ ํ•œ ์ค„ ์ถœ๋ ฅ)

 

white-space : nowrap;   /* ๊ธ€์ด ํ•œ ์ค„์—์„œ ๋„˜์–ด๊ฐ€์ง€ ์•Š์Œ*/
text-overflow: ellipsis;   /* ๊ธ€์ด ๊ณต๊ฐ„๋ณด๋‹ค ๊ธด ๊ฒฝ์šฐ ...์„ ๋„ฃ์–ด์คŒ */
  • ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์˜ ๋ชจ์Šต์ฒ˜๋Ÿผ ๋ฆฌ์ŠคํŠธ ์ œ๋ชฉ์˜ ๊ธ€์ด ํ•œ ์ค„์„ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ์ˆ˜์ •ํ•˜์˜€๋‹ค.
  • ์›๋ž˜๋Š” ...์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ๋งž์œผ๋‚˜ ํ•ด๋‹น ๋‚ด์šฉ์„ ๋‹ด๊ณ ์žˆ๋Š” ๋ฐ˜์‘ํ˜• ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๊ฐ€ ์œ ๋™์ ์ด๊ณ  ์ปค์„œ ...์ด ์ ์šฉ๋˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋‹ค์Œ์— ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

 

 

 

4. ๊ณผ์ œ ๊ตฌํ˜„

 

  • SigninActivity.kt์—์„œ ์ž‘์„ฑํ•ด์•ผ ํ•  ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์™„๋ฃŒํ•˜์˜€๋‹ค. (์ธํ…ํŠธ ์ฒ˜๋ฆฌ, ์•„์ด๋”” ๊ฐ’ ๋„˜๊ฒจ์ฃผ๊ธฐ)
  • activity_home.xml์˜ ui๋ฅผ ๊ตฌ์ƒํ•˜๊ณ , ๊ธฐ๋ณธ์ ์ธ ์ธํ…ํŠธ ๊ฐ’ ๋ฐ›๊ธฐ ๋ฐ ์ถœ๋ ฅ, finish() ์ฒ˜๋ฆฌ๊นŒ์ง€ ์ž‘์„ฑํ•˜์˜€๋‹ค.
  • ๊ตฌ์ฒด์ ์ธ ์ž๊ธฐ์†Œ๊ฐœ์™€ ํšŒ์›๊ฐ€์ž…์ด ๋‚จ์•˜๋‹ค. ์ฃผ์–ด์ง„ ๊ณผ์ œ๋Š” ๊ธˆ๋ฐฉ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

 


~ Retrospect ~

 

 

๋งค์ผ์˜ ํšŒ๊ณ ๊ฐ€ ์Œ“์ด๋‹ค๋ณด๋‹ˆ ๋ญ๊ฐ€ ๋ญ”์ง€ ๊ธฐ์–ตํ•˜๊ณ  ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒŒ ์–ด๋ ค์›Œ์„œ, TIL ์ œ๋ชฉ์˜ ํ˜•์‹์„ ๋ฐ”๊ฟ”๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T