~ Today I Learned ~
โ๏ธ Git ํน๊ฐ ์๊ฐ - Git & Github ๊ธฐ๋ณธ ๊ฐ๋
๋ฐ ๊ธฐ๋ณธ ๋ช
๋ น์ด
โ๏ธ Android ๊ฐ๋ฐ ์ข
ํฉ๋ฐ 2์ฃผ์ฐจ - ๋ก๋ ๋ฒํธ ์์ฑ๊ธฐ ์ ์
<๊ฒฐ๊ณผ๋ฌผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ>
1. Git ํน๊ฐ ์๊ฐ - Git & Github ๊ธฐ๋ณธ ๊ฐ๋ ๋ฐ ๊ธฐ๋ณธ ๋ช ๋ น์ด
[Git ํน๊ฐ] 1. Git & Github ๊ธฐ๋ณธ ๊ฐ๋ ๋ฐ ๊ธฐ๋ณธ ๋ช ๋ น์ด
1. ํ์ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด (git ๋ช ๋ น์ด ์๋) ์ฑํธ๋์ vscode ํฐ๋ฏธ๋ ๋์ , ํฐ๋ฏธ๋(๋งฅOS), git bash(์๋์ฐ)๋ก ์งํ 1. pwd (print working directory) ๋ด๊ฐ ์์ ํ๊ณ ์๋ ํด๋๋ฅผ ๋ณด์ฌ๋ฌ๋ผ๋ ๋ป ์ฐธ๊ณ : ~ ๋ ํ(Home)์ด
limheejin.tistory.com
- ๋ฆฌ๋ ์ค ๋ช ๋ น์ด pwd, ls, ls -a, cd, mkdir, touch
- Git๊ณผ Github์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ ์ด์
- ๊น ๋ช ๋ น์ด (git init, git add, git commit -m, git status, git log, git clone, git pull)์ conflict
์ ๋ํด ๋ฐฐ์ ๋ค. ๋ค์ ์๊ฐ์ git branch, git switch, git checkout, git merge, git stash์ ํ์ ์ ๋ํด ๋ฐฐ์ด๋ค.
2. Android ๊ฐ๋ฐ ์ข ํฉ๋ฐ 2์ฃผ์ฐจ - ๋ก๋ ๋ฒํธ ์์ฑ๊ธฐ ์ ์
๐จ MainActivity ์ค๊ณ
- onCreate ์์์๋ ๋ฒํผ๊ณผ ๋๋ฒํผ์ปค, ํ
์คํธ๋ทฐ ๋ฑ์ id๋ก ์ฐพ์ val๋ก ์ฐ๊ฒฐ, didRun๊ณผ pickNumberSet ์ ์ธ
didRun ์ค์ ์ด์ : ์ค์ ๋ก ๋ด๊ฐ ์ด ๋ฒํธ๋ฅผ ์ถ๊ฐํ๊ณ ์๊ณ ์๋ ์์ฑ์ ์์ํ ๊ทธ ์ดํ
6๊ฐ๊ฐ ๊ฝ ์ฑ์์ง๋ฉด ๋ฒํธ๋ฅผ ๋ ์ถ๊ฐํ ์ ์๊ฒ ํ๊ธฐ ์ํจ. ๊ฝ ์ฑ์์ง๋ฉด true๋ก ๋ฐ๊พธ๊ณ , ํด๋ฆฌ์ด ๋๋ฅด๋ฉด false๋ก ๋ฐ๊ฟ๊ฒ - onCreate ์์์ ์ด 3๊ฐ์ง์ ์ด๊ธฐํ๋ฅผ ๊ตฌ์ฑํ๋ค.
initRunButton()
initAddButton()
initClearButton() - (1) initClearButton() ์์ญ
๊ธฐ์กด์ ๊ฐ๋ค์ ๋ค ์ด๊ธฐํํ๋ ์ฝ๋ ์์ฑ
ex) pickNumberSet ํด๋ฆฌ์ด, numTextViewList isVisible false, didRun false - (2) initAddButton() ์์ญ
๋ด๊ฐ ์ ํํ ๊ณต์ ์ฌ๋ฆฌ๋ ์ฝ๋๋ฅผ ์์ฑ
when์ ํตํด ๊ณต์ด ์ฌ๋ผ๊ฐ๋ ์์ธ ์กฐ๊ฑด๋ค์ ์์ธ์ฒ๋ฆฌ
(1) didRun -> true ๊ฐ์ธ ๊ฒฝ์ฐ : ๊ฝ ์ฐจ ์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก ๋ ์ฌ๋ฆฌ๋ฉด ์ ๋จ
(2) ๊ณ ๋ฅธ ์ซ์๋ ์ด 6๊ฐ ๊น์ง๋ง ๊ฐ๋ฅํจ
(3) ์ด๋ฏธ ๊ณ ๋ฅธ ์ซ์๋ ๋ค์ ๋ฃ์ง ๋ชปํจ
๊ทธ ์ด์ธ์ ๊ฒฝ์ฐ๋ else๋ก ๊ณ ๋ฅธ ๊ณต์ ๋ฃ๋๋ก ์ฒ๋ฆฌ (isVisible true, numTextViewList[pickNumberSet.size] ๋ฑ) - (3) initRunButton() ์์ญ
๋ก๋ ๋ฒํธ๋ฅผ ์๋ ์์ฑ ์์ผ์ฃผ๋ ์ฝ๋ ์์ฑ
๋ด๊ฐ ์ด๋ฏธ ๊ณ ๋ฅธ ์ซ์๊ฐ ์์ ๋๋ฅผ ์ํ์ฌ list์์ getRandom() ๊ฐ์ ๊ฐ์ ธ์ด
getRandom()์์๋ ์ด๋ฏธ ๊ณ ๋ฅธ ๊ฐ์ ๋นผ๊ณ numbers์ ๋ฃ๊ณ ,
์ด๋ฏธ ๊ณ ๋ฅธ ์ซ์ + numbers (6-์ด๋ฏธ ๊ณ ๋ฅธ ์ซ์ ๊ฐฏ์) ๋งํผ ์ ๋ ฌํ์ฌ ๋ฆฌ์คํธ์ ๋ฐํ
val numbers = (1..45).filter{ it !in pickNumberSet}
return (pickNumberSet + numbers.shuffled().take(6-pickNumberSet.size)).sorted()
๊ทธ ๋ค์ setNumBack ํจ์๋ฅผ ๋ง๋ค์ด ์ซ์์ ๊ณต ์๊น์ ์ฐ๊ฒฐํด์ฃผ๊ณ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑ
๐ก์ฐธ๊ณ : Linear Layout์ Orientation์ด ํ์ (์: android:orientation="horizontal")
๐จ ๋ณํ
1. ์ ํ ๊ฐ์ ๋ฐ ํ ์คํธ ๋ฉ์์ง ์์
- ๊ธฐ์กด ์ฝ๋๋ ์ด 5๊ฐ๋ฐ์ ๋ชป ๊ณ ๋ฅด๋๋ฐ, ์ค์ ๋ก๋ ๋ฒํธ๋ 6๊ฐ๋ผ 6๊ฐ๋ฅผ ๋ค ์ ํํ๋ ๊ฒฝ์ฐ๋ ๋ง๋ค๊ณ ์ถ์๋ค.
- ๋ฐ๋ผ์ initAddButton ํจ์์์๋ pickNumberSet.size >= 6 ์ผ๋ก ์์ ํ๊ณ ,
RunButton ํจ์์๋ when {pickNumberSet.size >= 6 -> showToast("์ด๋ฏธ 6๊ฐ๋ฅผ ๋ค ๊ณ ๋ฅด์ จ๋ค์!")} ๋ฅผ ๋ฃ์ด๋ดค๋ค. - ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ์ ๋ฐ๋ผ 6๊ฐ๋ฅผ ๊ณ ๋ฅด๊ณ , ์์ฑ ์์์ ํ ์คํธ ๋ฉ์์ง๊ฐ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค.
2. ํฐํธ ์์
- ์ด์ BMI ๊ณ์ฐ๊ธฐ์ ๊ฐ์ด resource์ ttfํ์ผ์ ๋ฃ์ด ํฐํธ๋ฅผ ์ ์ฉํด์ฃผ์๋ค.
3. ๋ฒํผ ๋ฐฐ๊ฒฝ ์์
- ๊ธฐ๋ณธ ๋ณด๋ผ์ ๋ฐฐ๊ฒฝ์ ๋ฒํผ์ด ๋๋ฌด ๋ง์์ ์๋ค์ด ๋ณ๊ฒฝํ๋ค.
- android:backgroundTint="#126893" ๋ฅผ Button ์์ญ ์์ ๋ฃ์ด์ฃผ์๋ค.
res -> values -> themes ํด๋์ themes.xml, themes.xml(night) ๋ ๊ฐ์ ํ์ผ์ด ์๋ค.ํด๋น ๋ถ๋ถ ์ค parent="Theme.MaterialComponents.DayNight.DarActionBar" ๋ก ๋์ด ์๋ ๋ถ๋ถ์์MaterialComponents๋ ์ฒ์์ ๋ณด๋ผ์์ default ๋ฐฐ๊ฒฝ์ผ๋ก ๊ฐ์ง๊ณ ์๊ธฐ์ ์์ ํ ์๊ฐ ์๊ฒ ๋์ด์๋ค.์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด MaterialComponents๋ฅผ AppCompat์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.์ฐธ๊ณ ๋ก xml ์์ ์ ํ๊ณ ์ถ์ง ์๋ค๋ฉด, Button์ ์ ์ธํ ๋๋ง๋ค<androidx.appcompat.widget.AppCompatButton .. ๋ก ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
์์ ๋ด์ฉ์ ํ์ฌ ๋ฒ์ ์ ์๋๋ก์ด๋ ์คํ๋์ค์์ ๋ฑํ ์ธ๋ชจ ์๋ ์ ๋ณด์๋ค.
~ Trouble Shooting ~
1. ์ง์ ์ฝ๋๋ก ImageView๋ฅผ ๊ตฌํํ๋ ๊ณผ์ ์์์ ์๋ฌ
์์ tools:context=".MainActivity" /> ๋ถ๋ถ์์ /(์ฌ๋์)๋ฅผ ์ญ์ ํ๋ฉด ์ ์ ์๋ ๋จ.
๊ทธ๋ฆฌ๊ณ ๋ฐ์์ </ ์
๋ ฅํ๋ฉด ์๋์ผ๋ก </androidx.constraintlayout.widget.ConstraintLayout> ๋ถ๋ถ ์์ฑ ๋จ
์ /๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์
๋ ฅ๋์ด ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์
2. ๋ฉ์ธ ์กํฐ๋นํฐ์์ findViewById ์์ฑ ์ค ์๊ธด ๋ฌธ์
๊ณต 6๊ฐ๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํด numTextViewList๋ฅผ ๋ง๋ค๋ฉด์ ์์ findViewById๋ฅผ ๋์ดํ๋๋ฐ,
์๋์ด ๊ณ์ ์๋๊ธธ๋ ํ์ธํ๋๋ findViewById๋ฅผ ์ฌ๋ฌ๊ฐ ๋์ดํ ๋ ,(์ผํ)๊ฐ ํ์ํ์
~ ETC ~
์์ํ์ง ์ผ๋ง ๋์ง๋ ์์๋๋ฐ ๋งค์ผ ์๊ฐ์ด ๋ชจ์๋ผ๋ค.
๋นจ๋ฆฌ ๋ฐฐ์์ ๊ตฌํํ๊ณ ์ถ์ ๊ฒ ์ฐ๋๋ฏธ๋ผ, ๋ฌธ๋ฒ๊ณผ ์๊ณ ๋ฆฌ์ฆ๋ ๋นจ๋ ๋์ด๊ฐ๊ณ ์ถ์๋ฐ ์ฝ์ง ์๋ค. ์์ฐฝํจ ๋ฐํ ์ค๋น๋ ํด์ผํ๋๋ฐ!