๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป Extracurricular/์ฝ”๋ฎค๋‹ˆํ‹ฐ ๋ชจ๊ฐ์ฝ”

(17)
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > -ํ›„๊ธฐ ์ด๊ณณ์€ ์ €๋งŒ์˜ ๊ณต๊ฐ„์ด๋‹ˆ ์ข€ ๋” ์†”์งํ•˜๊ฒŒ ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒจ๋ณผ๊นŒํ•ด์š”! โœ… ๋ชจ๊ฐ์ฝ”์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ ์ €๋Š” ์ง€๊ธˆ๊นŒ์ง€ ํ•œ๋ฒˆ๋„ ์ฝ”ํ‹€๋ฆฐ์„ ์จ๋ณธ ์ ์ด ์—†์–ด์„œ, ์ด๋ฒˆ ๊ฒจ์šธ๋ฐฉํ•™ ๋™์•ˆ ์ฝ”ํ‹€๋ฆฐ์„ ๋…ํ•™ํ•˜๋ฉด์„œ ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์–ด์š”! ๊ทธ๋Ÿฐ๋ฐ ๋งค์ฃผ ์›”์ˆ˜๊ธˆ 4์‹œ๊ฐ„์”ฉ ์ง„ํ–‰๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์—๋„ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์—ˆ๊ณ , CJ UNIT์„ ๋„ˆ๋ฌด ์ง€์›ํ•˜๊ณ  ์‹ถ์–ด์„œ ๋นจ๋ฆฌ SNS ๊ณ„์ •์„ ๋งŒ๋“ค์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์— (CJ UNIT ์šฐ๋Œ€์‚ฌํ•ญ์— SNS๋ฅผ ํ™œ๋ฐœํ•˜๊ฒŒ ์šด์˜ํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๊ณ  ์จ์ ธ์žˆ์—ˆ์–ด์š”!) ๋ธ”๋กœ๊ทธ๋ž‘ ์ธ์Šคํƒ€๊ทธ๋žจ ๋“ฑ์„ ์šด์˜ํ•˜๋Š๋ผ ํ˜ผ์ž ๋…ํ•™์€ ๋ฌด๋ฆฌ๋ผ๊ณ  ํŒ๋‹จํ–ˆ์–ด์š” ๐Ÿ˜ฑ ๊ทธ๋ž˜๋„ ๊ฒจ์šธ๋ฐฉํ•™์ด ๋๋‚˜๊ธฐ ์ „์— ์ƒˆ๋กœ์šด ๋„์ „์„ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์— ์ฐ๋จน์ด๋ผ๋„ ํ•ด๋ณด์ž๋Š” ๋งˆ์Œ(๏ฝก๏ฝฅ∀๏ฝฅ)๏พ‰๏พž์œผ๋กœ ๋ชจ๊ฐ์ฝ” ์„ ์ฐธ๊ฐ€ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. โœ… ๋ชจ๊ฐ์ฝ”๋กœ ์ธํ•œ ๋ณ€ํ™”(์ฝ”๋”ฉ ๊ณต๋ถ€์— ๋ชจ๊ฐ์ฝ”๊ฐ€ ..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 15์ผ์ฐจ # ๊ณผ์ œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์•„๋ž˜ ์‚ฌ์šฉ๋œ ์‚ฌ์ง„์€ ๋ชจ๋‘ ์ด๊ณณ์—์„œ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://codemate.kr/project/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-APP-%EB%A9%94%EC%9D%B4%ED%8A%B8-%EC%BD%94%ED%8B%80%EB%A6%B0-%EA%B8%B0%EC%B4%88%ED%8E%B8/15.-APK-%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0 ์•ˆ๋“œ๋กœ์ด๋“œ APP ๋ฉ”์ดํŠธ - ์ฝ”ํ‹€๋ฆฐ ๊ธฐ์ดˆํŽธ :: #15. APK ํŒŒ์ผ๋กœ ๋นŒ๋“œํ•˜๊ธฐ | ์ฝ”๋“œ๋ฉ”์ดํŠธ ๐Ÿ“Œ APK ํŒŒ์ผ ํ˜น์‹œ ํ™•์žฅ์ž๊ฐ€ .apk ์ธ ํŒŒ์ผ ๋“ค์–ด๋ณด๊ฑฐ๋‚˜ ๋ณด์‹  ์  ์žˆ์œผ์‹ ๊ฐ€์š”? ์šฐ๋ฆฌ๋Š” ๋ณดํ†ต ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์—์„œ ์•ฑ์„ ๋‹ค์šด๋กœ..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 14์ผ์ฐจ โœ… ํ…์ŠคํŠธ ๊ณต์œ ํ•˜๊ธฐ โšก ACTION_SEND ์ธํ…ํŠธ๋ฅผ ์ƒ์„ฑ "๊ณต์œ ํ•  ๋ฉ”์‹œ์ง€" ๋ถ€๋ถ„์— ์›ํ•˜๋Š” ํ…์ŠคํŠธ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‹ค์–‘ํ•œ ์ฝ˜ํ…์ธ (์ด๋ฏธ์ง€, url ๋“ฑ) ๊ณต์œ  ๊ฐ€๋Šฅ val sendIntent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, "๊ณต์œ ํ•  ๋ฉ”์„ธ์ง€") type = "text/plain" } โšก Intent.createChooser()๋ฅผ ์ด์šฉํ•ด Intent ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ startActivity๋กœ ์‹คํ–‰ val shareIntent = Intent.createChooser(sendIntent, null) startActivity(shareIntent) โœ… ์ ์šฉํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญ ์‹œ, ํ…์ŠคํŠธ ๊ณต์œ ์ฐฝ์ด ๋‚˜์˜ค๋„๋ก..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 13์ผ์ฐจ โœ… ์˜ค๋Š˜์˜ ๋ฌธ์ œ : Activity ์ „ํ™˜ํ•˜๊ธฐ โšก ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฒดํฌ ํ›„ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ์–ด์š”. ๋‹ค์‹œ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ๋ผ๋Š” ๋ฌธ๊ตฌ ํ‘œ์‹œ โšก ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋‹ค๋ฉด MemoActivity ๋กœ ์ „ํ™˜ (์ „ํ™˜ ์‹œ MainActivity๋Š” ์Šคํƒ์—์„œ ์ œ๊ฑฐ) ๐Ÿ‘€ MainActivity.kt package com.comu.android.secretmemo import android.os.Bundle import android.util.Log import android.widget.Button import android.widget.EditText import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.wid..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 12์ผ์ฐจ โœ… Activity ์ƒ์„ฑํ•˜๊ธฐ โšกActivity ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ง์ ‘ ์ฝ”ํ‹€๋ฆฐ, xml ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ์ œ๊ณตํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์ด์šฉ โšก ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•  ๊ฒฝ์šฐ ๋”ฐ๋กœ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์„ค์ •์„ ๋”ฐ๋กœ ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋จ! 1๏ธโƒฃ New > Activity > Empty Activity ๋ฅผ ํด๋ฆญ 2๏ธโƒฃ Activity ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ฉด Layout ์ด๋ฆ„๋„ ์ž๋™์œผ๋กœ ๋งž์ถฐ์„œ ๋ณ€๊ฒฝ๋จ 3๏ธโƒฃ Finish ๋ฒ„ํŠผ ํด๋ฆญ ์™„๋ฃŒ ํ›„ ๋ฉ”๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ์—ด๋ฉด, ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋จ. โœ… ์•ฑ ๋Ÿฐ์ฒ˜ Activity ๋ณ€๊ฒฝ โšก Activity๊ฐ€ ์ œ๋Œ€๋กœ ๋งŒ๋“ค์—ˆ๋Š”์ง€ TEST! : ํ…Œ์ŠคํŠธ ๊ฒธ ์•ฑ์˜ ๋Ÿฐ์ฒ˜ (์•ฑ์ด ์—ด๋ฆด ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์—ด๋ฆฌ๋Š” Activity) ๋ฅผ ๋ณ€๊ฒฝ โšก ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ ์ˆ˜์ •! : MainActivity ->..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 11์ผ์ฐจ โœ… ์˜ค๋Š˜ ๋ฐฐ์šธ ๋‚ด์šฉ EditText ์— ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฒดํฌํ•˜๋Š” ์กฐ๊ฑด๋ฌธ ๋งŒ๋“ค๊ธฐ โœ… EditText์— ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ๐Ÿ“› ์ฃผ์˜ ๐Ÿ“› Edit Text ์ปดํฌ๋„ŒํŠธ์˜ text๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” ๋’ค์— ๊ผญ .toString()์„ ๋ถ™์—ฌ์•ผ ํ•จ! // EditText ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฐพ์•„์„œ editText ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค. val editText = findViewById(R.id.์•„์ด๋””) // editText ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์™€ passwordText ์— ์ €์žฅํ•œ๋‹ค. val passwordText = editText.text.toString() EditText๋Š”? ์ผ๋ฐ˜ TextView โŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ โญ• text ์†์„ฑ์ด ์ผ๋ฐ˜ textView์™€ ๋‹ฌ๋ฆฌ EditText ๋งŒ์˜..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 10์ผ์ฐจ โœ… ์˜ค๋Š˜์˜ ๋ฌธ์ œ : ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑํ•˜๊ธฐ โšก Text > TextView ์ปดํฌ๋„ŒํŠธ๋กœ “๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”” ๋ฌธ๊ตฌ ์ถ”๊ฐ€ โšก Text > Password(Numeric) ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ โšก ๋ฒ„ํŠผ ์ถ”๊ฐ€ ๋„ˆ๋ฌด ๊ฝ‰ ์ฑ„์šฐ๋Š” ๊ฒƒ๋ณด๋‹ค ์—ฌ๋ฐฑ์ด ์žˆ๋Š”๊ฒŒ ๋” ์˜ˆ์œ ๊ฒƒ ๊ฐ™์•„์„œ ์–‘์ชฝ ์—ฌ๋ฐฑ์„ 5~ 10์”ฉ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘€ xml ์ฝ”๋“œ ๐Ÿ‘€ ์‹คํ–‰๊ฒฐ๊ณผ https://codemate.kr/@guswlsdl04/๋ชจ๊ฐ์ฝ”-์ฝ”ํ‹€๋ฆฐ-๊ธฐ์ดˆํŽธ-10์ผ์ฐจ โ—€ CLICK HERE!
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 9์ผ์ฐจ โœ… ์•„์ด์ฝ˜ ๋งŒ๋“ค๊ธฐ ๐Ÿ‘‡๋งํฌ ํด๋ฆญ Launcher Icon Generator ์ด๋ฏธ์ง€, ์•„์ด์ฝ˜, ํ…์ŠคํŠธ ์ง€์ • ์ƒ‰์ƒ์„ ์กฐ์ •ํ•˜์—ฌ ์›ํ•˜๋Š” ์•„์ด์ฝ˜ ์ƒ์„ฑ ์šฐ์ธก ์ƒ๋‹จ์˜ ‘๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ’ ํด๋ฆญ! โœ… ์•ฑ์—์„œ ์•„์ด์ฝ˜ ๋ณ€๊ฒฝํ•˜๊ธฐ โšก ic_launcher ๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋“ค์–ด๊ฐ„ ํŒŒ์ผ์€ ๋ชจ๋‘ ์•„์ด์ฝ˜๊ณผ ๊ด€๋ จ๋œ ํŒŒ์ผ! 1๏ธโƒฃ New > Image Asset ํด๋ฆญ 2๏ธโƒฃ Configure Image Asset > Name Name ๊ฐ’ ๋ณ€๊ฒฝ โŒ ๐Ÿ‘€ Foreground Layer : ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ ์„ค์ • ๐Ÿ‘€ Background Layer : ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€์˜ ๋ฐฐ๊ฒฝ์ƒ‰ ์„ค์ • 3๏ธโƒฃ Foreground Layer > ํด๋”๋ฒ„ํŠผ ํด๋ฆญ ์•„๊นŒ ๋‹ค์šด ๋ฐ›์•˜๋˜ ํŒŒ์ผ ์ด๋ฆ„.png ์„ ํƒ! 4๏ธโƒฃ Background Layer > Color ์„ค์ • ์•„์ด์ฝ˜ ๋ฐฐ๊ฒฝ์ƒ‰๊ณผ ๋™์ผํ•˜๊ฒŒ..