๋ฆฌ์คํธ๋ทฐ(ListView)๋?๋ฆฌ์คํธ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ ฏ์ด๋ค.์ฝํ๋ฆฐ ํ์ผ์์ ๋ฆฌ์คํธ ์์ ๋ด๊ฒจ์๋ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ Adapter๋ฅผ ํตํด xmlํ์ผ์ ListView์ ๊ฐ๊ฐ์ ์์ดํ
์ ๋ฃ์ด์ค๋ค.Adapter๋ ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๋ค๊ณผ ListView์ ์์ดํ
์ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ๊ฐ์ฒด๋ค. LilstView์์ ์์ดํ
์ ListView์ ํญ๋ชฉ์ ๋งํ๋ค. ์ด๋ํฐ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ListView๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ (๊ฐ๋จ์์ฝ)MainActivity์ ์๋ ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๋ค์ ์ด๋ํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค. ์์๋ก a, b, c๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค๊ณ ํ์.์ด๋ํฐ๊ฐ listview_item.xml์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ฃ๋๋ค.listview_item.xml์ activity_main.xml์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๋ค. ๋ค์์ ๋ฐฉ๋ฒ์ ๋ฐ..
์๋๋ก์ด๋
fun onBackPressed(){}๋ค๋ก๊ฐ๊ธฐ ๋์์ ๊ฐ์งํ๋ ํจ์๋ค.๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๊ดํธ์์ ์์
์ ์ํํ๋ค. ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ๋๋ฒ ์ฐ์ ๋๋ ์๋ ์ข
๋ฃํ๋ ๋ฐฉ๋ฒMainActivity ํด๋์ค์ isDouble ์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๋ฅผ ๋ง๋ค๊ณ false๋ก ์ค์ ํ๋ค.๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ํ ๋ฒ ๋๋ ์๋ isDouble ๋ณ์๊ฐ true๋ก ๋ฐ๋๋๋ก ํ๋ค."์ข
๋ฃ ํ์๋ ค๋ฉด ๋๋ธํด๋ฆญ ํ์ธ์" ๋ผ๋ ํ ์คํธ ๋ฉ์ธ์ง๋ ๊ฐ์ด ๋์ฐ๋๋ก ํ๋ค.Handler() ํจ์๋ฅผ ์ด์ฉํ์ฌ 2์ด๊ฐ ์ง๋๋ฉด isDouble ๋ณ์๊ฐ flase๊ฐ ๋๋๋ก ํ๋ค.2์ด์์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ํ ๋ฒ ๋ ๋๋ฌ์ isDouble์ด true ์ํ๋ผ๋ฉด ์ฑ์ ์ข
๋ฃํ๋๋ก onBackPressed ํจ์์ ๋งจ ์์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ ๋๋ค.if(isDouble){ ..
๋ก๊ทธ๋?๋ด๊ฐ ์ง์ ํ ๊ฐ์ด ์ฝ๋์ ์ ๋๋ก ๋ฃ์ด์ง๊ณ ์๋์ง ๋๋ฒ๊น
ํ ๋ ์ฃผ๋ก ์ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.์ฑ์ด ์คํ๋๋ ๋์ค์ ํน์ ์์ ์ ๊ธฐ๋ก์ผ๋ก ๋จ๊ธด๋ค. ๋ก๊ทธ์ ์ข
๋ฅ (5๊ฐ์ง)๋๋ฒ๊ทธ (Debug)Log.d("(ํ๊ทธ)", "(๋ฉ์ธ์ง)")์ค๋ฅ (Error)Log.e("(ํ๊ทธ)", "(๋ฉ์ธ์ง)")๊ฒฝ๊ณ (Warning)Log.w("(ํ๊ทธ)", "(๋ฉ์ธ์ง)")์ ๋ณด (Information)Log.i("(ํ๊ทธ)", "(๋ฉ์ธ์ง)")์์ธ (Verbose)Log.v("(ํ๊ทธ)", "(๋ฉ์ธ์ง)") ๋ก๊ทธ ํ์ธํ๋ ๋ฐฉ๋ฒ์๋๋ก์ด๋ ์คํ๋์ค ํ๋จ์ Logcat์ ๋ค์ด๊ฐ๋ค. Logcat์ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์๋๊ณณ์ด๋ค.์ฑ์ ์คํํ๋ฉด ์์คํ
์์ฒด์์ ์ฐํ๋ ๋ค์ํ ๋ก๊ทธ๋ค์ด ์์์ ธ ๋์จ๋ค.๋ก๊ทธ ์ฝ๋๋ฅผ ์ผ๋ค๋ฉด ๋ง์ ๋ก๊ทธ๋ค ์ค์ ๋ด๊ฐ ์์ฑํ๋ ํด๋น ๋ก๊ทธ๋ค..
1. ์ํ๋ ๊ธ์จ์ฒด ttf ํ์ผ์ ๋ค์ด๋ฐ๋๋ค. ์ด ๊ธ์ ์์ ์์๋ ๋ฐฐ๋ฌ์ ๋ฏผ์กฑ ์ฃผ์์ฒด๋ฅผ ๋ค์ด ๋ฐ์๋ค.http://font.woowahan.com/jua/ ๋ฐฐ๋ฌ์๋ฏผ์กฑ ํฐํธ ์ฃผ์์ฒด ๋ค์ด๋ก๋๋ฐฐ๋ฌ์๋ฏผ์กฑ ์ฃผ์์ฒด ๋ค์ด๋ก๋ ๋ฐฐ๋ฌ์๋ฏผ์กฑ ์ฃผ์์ฒด๋ ๋ถ์ผ๋ก ์ง์ ๊ทธ๋ ค์ ๋ง๋ ์๊ธ์จ ๊ฐํ์ ๋ชจํฐ๋ธ๋ก ๋ง๋ค์์ต๋๋ค. ๋ถ์ผ๋ก ๊ทธ๋ ค ํ์ ๊ตต๊ธฐ๊ฐ ์ผ์ ํ์ง ์๊ณ ๋๊ธ๋๊ธํ ๋๋์ ์ฃผ๋ ์์ฒด๋ก ์font.woowahan.com 2. ๋ค์ด๋ก๋ ๋ฐ์ ํฐํธ ํ์ผ ์ ๋ชฉ์ด ๋๋ฌธ์๋ฉด ์๋๋ก์ด๋ ์คํ๋์ค์์ ์ธ์์ ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ์ผ ์ด๋ฆ์ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ค๋ค. 3. resํ์ผ์ font๋ผ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํ๋ ์๋ก ์์ฑํ๋ค. 4. ๋ค์ด๋ฐ์ ํฐํธ ํ์ผ์ font ๋๋ ํ ๋ฆฌ์ ๋ฃ๋๋ค. 5. xmlํ์ผ์์ fontFamily ์์ฑ์ผ๋ก ๋ค์ด๋ฐ์ ํฐํธ๋ฅผ ์ฌ์ฉํ ์..
findViewById & ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ฌํ๊น์ง findViewById ๋ก xml ํ์ผ์ ์๋ ์์๋ค์ ์ฝํ๋ฆฐ ํ์ผ์ ๊ฐ์ ธ์ ํด๋น ์์๋ฅผ ์ ์ดํด ์์์ง๋ง๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ด์ฉํ์ฌ xml ํ์ผ์ ์์๋ค์ ๊ฐ์ ธ์จ๋ค๋ฉด ์ฝํ๋ฆฐ ํ์ผ์์ ๋ ์ง๊ด์ ์ด๊ณ ๊ฐ๋
์ฑ ์ข๊ฒ ์ฝ๋๋ฅผ ์ง๋ฉฐ ์ ์ํ ์ ์๋ค.๋ช๋ช๊ฐ์ ์์๋ค์ ๊ฐ์ ธ์ฌ๋ findViewById๋ก ๊ฐ์ ธ์๋ ์๊ด ์์ด ๋ณด์ด์ง๋ง, ์์๋ค์ด ๋์ด๋ ์๋ก ๊ด๋ฆฌํ๊ธฐ ๊น๋ค๋กญ๊ณ ์ฝ๋์ ๊ฐ๋
์ฑ๋ ๋ง์ด ๋จ์ด์ง๊ฒ์ด๋ค.findViewById๋ฅผ ๋์ฒดํ๋ ๊ธฐ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์ฌ์ฉ ๋ฐฉ๋ฒ1. build.gradle(Module: ...) ํ์ผ๋ก ์ด๋ํ๋ค. 2. android{}์ ๋งจ ๋ง์ง๋ง์ dataBinding{enabled = true}๋ฅผ ์ ๊ณ ์๋จ์ Sync Now๋ฅผ ๋..
๋ค๋ฅธ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ ค๋ฉด ์ ์กํฐ๋นํฐ๋ฅผ ๋ง๋ ๋ค์ intent๋ฅผ ํตํด์ ์ด๋ํ ์ ์๋ค.์์๋ก ํ๋์ ์ฌ์ง์ฒฉ ์ฑ์ด ์๋ค.์ฌ์ง์ฒฉ์์ ์ฌ์ง ํ๋๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ์ฌ์ง์ ํฌ๊ฒ ํ๋ํ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ ๊ธฐ๋ฅ์ด ์๋ค.๋ง์ฝ ์ฌ์ง์ฒฉ์ ์ฌ์ง์ด 100๊ฐ๊ฐ ๋ค์ด์๋ค๋ฉด 100๊ฐ์ ํ๋์ฌ์ง ์กํฐ๋นํฐ๋ฅผ ๋ง๋ค์ด์ intent๋ก ์ฐ๊ฒฐํด์ค์ผํ ๊น?ํ๋ฉด๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ๋ก ์กํฐ๋นํฐ 100๊ฐ๋ฅผ ๋ง๋ค์ง ์์๋ ๋๋ค! 1. ์ฌ์ง์ฒฉ ์ฑ์์ ์ฌ์ง ํด๋ฆญ์ ํด๋น์ฌ์ง์ ํฌ๊ฒ ๋ณด๋ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๊ธฐ์ฌ์ง ํด๋ฆญ์ ํ๋์ฌ์ง์ผ๋ก ๋์ด๊ฐ ํ๋ฉด์ ๋ง๋ค๊ธฐ ์ํด ์ ์กํฐ๋นํฐ๋ฅผ ๋ง๋ ๋ค. ์ด๋ฆ์ ImageInsideActivity ๋ผ๊ณ ํ๊ฒ ๋ค.์๋ก ๋ง๋ ์กํฐ๋นํฐ์ xmlํ์ผ์ ImageView๋ฅผ ํ๋ ์์ฑํ๋ค.๋๋น์ ๋์ด๋ match-parent๋ก ์ง์ ํ๋ค.match-pa..
์ฌ์ง์ ๋ ์ด์์ ํฌ๊ธฐ์ ๋ง์ถฐ์ ํ๋ํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?ImageView์ ์์ฑ ์ค scaleType์ ์ฌ์ฉํ๋ฉด ๋๋ค.android:scaleType = "center"์๋ณธ์ ๊ฐ๋ก์ธ๋ก ๋น์จ์ ์ ์งํ๋ฉฐ ๋ ์ด์์ ํฌ๊ธฐ์ ๋ง์ถฐ์ ํ๋ํ๋ค. ์ด ๋ ๋ ์ด์์๋ณด๋ค ์ด๋ฏธ์ง๊ฐ ๋ ํฌ๋ค๋ฉด ๋ฒ์ด๋ ์ด๋ฏธ์ง๋ ์ถ๋ ฅ๋์ง ์๋๋ค.android:scaleType = "fitXY"์๋ณธ์ ๊ฐ๋ก์ธ๋ก ๋น์จ์ ๋ฌด์ํ๊ณ ๋ ์ด์์ ํฌ๊ธฐ์ ๋ง์ถฐ์ ํ๋ํ๋ค. ์๋ณธ์ ๊ฐ๋ก์ธ๋ก ๋น์จ์ ๋ฌด์ํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๋ฌผ์ด ์ธ๋ก๋ก ๋๋ ค์ง๊ฑฐ๋ ๊ฐ๋ก๋ก ๋๋ ค์ง๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์๋ค.์์ ๋๊ฐ์ง ์ธ์ scaleType์๋ 6๊ฐ์ง์ ์ข
๋ฅ๊ฐ ๋ ์๋ค. ์๋ ๋งํฌ์ scaleType์ 8๊ฐ์ง ์ข
๋ฅ๊ฐ ์ ์ค๋ช
๋์ด์๋ค.https://sharp57dev.tistory.com/..
์คํ๋์ ํ๋ฉด ์ด๋?์ฌ์ฉ์๊ฐ ๋ณด๊ฒ ๋ ๋๊ธฐํ๋ฉด์ด๋ค.์ฑ์ด ๋ก๋ฉ๋๋ ๋์์ ๋๋ ์ด ์๊ฐ์ ์ ๊น ๋ณด์ฌ์ง์๋ ์๊ณ , ์คํ ์ ์ ๊น์ ์๊ฐํ๋ฉด์ผ๋ก๋ ์ฐ์ฌ์ง ์ ์๋ค. ์คํ๋์ ํ๋ฉด ๊ตฌํ1. ๋ฉ์ธ ํ๋ฉด๋ณด๋ค ์คํ๋์ ํ๋ฉด์ ์์์๋ก ๋์ค๊ฒ ํ๊ธฐ์คํ๋์ ํ๋ฉด์ ๋ณด์ฌ์ง ์ด๋ฏธ์ง ํ์ผ์ drawble ํ์ผ์ ๋ฃ์ด๋๋ค.์๋ก์ด ์กํฐ๋นํฐ๋ฅผ ํ๋ ๋ง๋ ๋ค. ์ด ์กํฐ๋นํฐ ์ด๋ฆ์ SplashActivity๋ผ๊ณ ํ ๊ฒ์ดใ
ใท.Mainfests ํ์ผ์ AndroidMainfest.xml ํ์ผ์ ๊ฐ๋ฉด MainActivity์ activity ํ๊ทธ์์ ๊ฐ ์์๊ฒ์ด๋ค. ์ ์ฒด๋ฅผ ์๋ผ์ SplashActivity์ activityํ๊ทธ์์ ๋ถ์ฌ๋ฃ๋๋ค.์ด ๊ณผ์ ์ ์๋ฃํ๋ฉด ์ฑ ์คํ์ ๋ฉ์ธ ์กํฐ๋นํฐ๊ฐ ์๋๋ผ ์คํ๋์ ์กํฐ๋นํฐ๊ฐ ๋จผ์ ๋จ๊ฒ ๋ ๊ฒ์ด๋ค. 2. ์คํ..
์๋ก์ด ํ๋ฉด์ผ๋ก ์ด๋ํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผํ ๊น? 1. ์ด๋ํ ์ ํ๋ฉด์ ๋ง๋ ๋ค.์๋ก์ด Activity๋ฅผ ์๋ก ๋ง๋ ๋ค. ( Activityํ๋๊ฐ ํ๋ฉด ํ๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. )MainActivity๊ฐ ์๋ ํด๋์ ์๋ก์ด Activity๋ฅผ ๋ง๋ ๋ค.์ฌ๋ฌ ์กํฐ๋นํฐ ์ข
๋ฅ๋ค์ด ์์ง๋ง, ์์์์ ๋น ์กํฐ๋นํฐ(Empty Views Activity)๋ฅผ ๋ง๋ ๋ค. ์์ฑ์ Generate Layout File์ ์ฒดํฌํ์๊ฐ ๋์ด์๋ค๋ฉด Activity ์์ฑ์ ๊ทธ์ ๋ง๋ xml ํ์ผ๋ ๊ฐ์ด ์๋์์ฑ ๋๋ค.๊ฐ์ด ์๋์์ฑ๋ xmlํ์ผ์ ์๋ก์ด ํ๋ฉด์ ๊ตฌ์ฑ์ ๋์์ธํ๋ฉด ๋๋ค. 2. Intent ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค.Intentํจ์๋ฅผ ๋ด์ ๋ณ์๋ฅผ ํ๋ ์๋ก ์ ์ธํ๋ค.Intent ํจ์ ์์ Intent(this, (..
์ด๋ค ์์๋ฅผ ํด๋ฆญํ์ ๋ ์ค์ ํ ๋ฐ์์ด ๋์ค๋๋ก ํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ํด์ผํ ๊น? 1. ๋จผ์ xml ํ์ผ์ ๋ค์ด๊ฐ ์์์ id๋ฅผ ์ง์ ํด์ค๋ค. ์์์ฝ๋๋ ์ด๋ฏธ์ง ํ์ผ์ ์์๋ก ์ค์ ํ์๋ค 2. ํ๋ก๊ทธ๋จ์ด ์์๊ฐ ํด๋ฆญ ๋์๋ค๋๊ฒ์ ์์์ผ ํ๋ค.MainActivity ํ์ผ์ ๋ค์ด๊ฐ ๋ณ์๋ฅผ ํ๋ ์ ์ธํ๋ค.๋ ์ด์์์ ์๋ ์์๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ findViewById()๋ฅผ ๋ณ์์ ๋ด๋๋ค.ImageView๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋์๋ฃํ์ด ๋ค์ด๊ฐ ๋๊ดํธ์ ImageView๋ฅผ ์ ์ด์ค๋ค.์๊ดํธ ์์๋ ImageView ์ค์ hyein_1์ ๊ฐ์ ธ์ฌ๊ฑฐ๊ธฐ ๋๋ฌธ์ R.id.hyein_1์ ์ ์ด์ค๋ค.val image1 = findViewById(R.id.hyein_1) 3. ์์๊ฐ ํด๋ฆญ๋์์ ๋ ์ด๋ค ํ์๋ฅผ ์ผ์ด๋ ์ง ์์ฑํด์ผํ๋ค.(์์..
Linear Layout๋ด์ฉ๋ฌผ๋ค์ ์ํ ๋๋ ์์ง์ผ๋ก ๋ฐฐ์นํ๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ์ํ ๋ฐฐ์น๋ค.์์ง์ผ๋ก ๋ฐฐ์นํ๊ณ ์ถ๋ค๋ฉด android:orientation:"vertical"์ ์จ์ฃผ๋ฉด ๋๋ค.๋ง์ฝ ์ํ์ผ๋ก ๋ฐฐ์นํ๋ค๊ณ ๋ฐ๋ก ์ ๊ณ ์ถ๋ค๋ฉด android:orientation:"horizontal"์ ์จ์ฃผ๋ฉด ๋๋ค.๋ ์ด์ด์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ์ค์ ํด ์ค ์ ์๋ค.์๋์ค์ ์ธ wrap_content์ match_parent๋ก ์ค์ ํ ์๋ ์๋ค.wrap_content : ๋ด์ฉ๋ฌผ์ ํฌ๊ธฐ์ ๋ง์ถ๋ค.match_parent : ํ๋ฉด์ ์ต๋ํฌ๊ธฐ๋ก ๊ฝ์ฑ์ด๋ค. ์ฌ์ง ์ฝ์
drawble ํ์ผ์์ ์ํ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ฃ์ด๋๋ค.xmlํ์ผ๋ก ๊ฐ์ ImageView ์์๋ฅผ ์ ์ด์ค๋ค.์ด๋ฏธ์ง์ ๋๋น์ ๋์ด๊ฐ ์๋์ผ๋ก ์์ฑ๋๋๋ฐ, ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ์ค์ ํด..
์ฝ๋ฃจํด(coroutine)๋น๋๊ธฐ๋ก ์ฌ๋ฌ๊ฐ์ ๋ฃจํด์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.๋ฉ์ธ ๋ฃจํด์ ๋ฐ๋ก๋๊ณ , ๋ณ๋๋ก ์งํ์ด ๊ฐ๋ฅํ ๋ฃจํด์ด๋ค.๊ฐ๋ฐ์๊ฐ ์คํ, ์ข
๋ฃ๋ฅผ ๋ง์๋๋ก ์ ์ดํ ์ ์๋ค.์ฝ๋ฃจํด์ ์ฌ์ฉํ๊ธฐ์ ์ต์๋จ์ "import kotlinx.coroutines.*" ์ ์จ์ค์ผํ๋ค. ์ฝ๋ฃจํด์ scope์ ์ด๋ฒ์ ๋ฐ ์คํ ๋ฒ์๋ฅผ ์ง์ ํ ์ ์๋ค.GlobalScope์ CoroutineScope๋ก ๋๋๋ค.GlobalScopeํ๋ก๊ทธ๋จ ์ด๋์์๋ ์ ์ด์ ๋์์ด ๊ฐ๋ฅํ ์ฝ๋ฃจํด์ ๊ธฐ๋ณธ ๋ฒ์๋ค.CoroutineScopeํน์ ํ ๋ชฉ์ ์ Dispatcher๋ฅผ ์ง์ ํ์ฌ ์ ์ด ๋ฐ ๋์์ด ๊ฐ๋ฅํ ์๋ก์ด ์ฝ๋ฃจํด์ ๋ฒ์๋ค.CoroutineScope๋ฅผ ๋ง๋ค ๋ ์ ์ฉ ๊ฐ๋ฅํ Dispatcher๋ ์ธ๊ฐ์ง๊ฐ ์๋ค. Dispatchers.Default..