~ Today I Learned ~
โ๏ธ ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (์ ์ผ ์์ ์ ๋ํ๊ธฐ, ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ)
โ๏ธ ์๋๋ก์ด๋ ์ฑ๊ฐ๋ฐ ์
๋ฌธ ๊ฐ์ 3์ฃผ์ฐจ ์๊ฐ ๋ฐ ์ ๋ฆฌ
โ๏ธ ๊ฐ์ธ ๊ณผ์ ์์
X๊ณํ์คํจX ํค์ค์คํฌ ๊ณผ์ ๋ณต์ต ๋ฐ ํด์ค
<๊ฒฐ๊ณผ๋ฌผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ>
1. ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด 2๋ฌธ์
- minOrNull(), filter(), substring(), slice(), with() ์ ์ฌ์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ดํ์๋ค.
๐ก substring()
- ๋ฌธ์์ด์์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ถ์ถํ๋ ๋ฐ ์ฌ์ฉ
- substring(startIndex: Int): ์์ ์ธ๋ฑ์ค๋ถํฐ ๋ฌธ์์ด์ ๋๊น์ง์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐํ
- substring(startIndex: Int, endIndex: Int): ์์ ์ธ๋ฑ์ค๋ถํฐ ์ข
๋ฃ ์ธ๋ฑ์ค ์ ๊น์ง์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐํ
์ฐธ๊ณ ๋ก ์์ ์ธ๋ฑ์ค๋ ํฌํจ๋์ง๋ง, ์ข ๋ฃ ์ธ๋ฑ์ค๋ ํฌํจ๋์ง ์๋๋ค. (๋ฏธ๋ง) - ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ธ๋ฑ์ค๋ 0
2. ์๋๋ก์ด๋ ์ฑ๊ฐ๋ฐ ์ ๋ฌธ ๊ฐ์ 3์ฃผ์ฐจ ์๊ฐ ๋ฐ ์ ๋ฆฌ
- View
- Widget
- ๋์คํ๋ ์ด ๋จ์(px, dp, dpi, in, mm, sp) ์ ๋ค์ํ ํด์๋์ ๋์(LDPI, MDPI, HDPI...)
- TextView, EditText, Button, ImageView
- Layout (Linear, Relative, Table, Frame, Constraint)
- Margin, Padding, Gravity
- Style, Theme
์์ ๊ฐ์ ๋ด์ฉ์ ๋ํ์ฌ ํ์ต์ ์งํํ๊ณ ์ ๋ฆฌํ์๋ค.
๋ํ, LinearLayout, RelativeLayout, CosntraintLayout์ ์ด์ฉํ์ฌ ์๋์ ๊ฐ์ ์ค์ต์ ์ํํ๋ค.
์๋๋ 4์ฃผ์ฐจ๊น์ง ๋ชจ๋ ์๊ฐํ๊ณ ์ถ์๋๋ฐ, ๊ณผ์ ์ ๋ณํํ๋ค๋ณด๋ ๋ด์ผ 4์ฃผ์ฐจ๋ฅผ ์๊ฐํด์ผ ํ ๊ฒ ๊ฐ๋ค.
3. ๊ฐ์ธ ๊ณผ์ ๊ตฌํ (ํ์๊ฐ์ ํ์ด์ง, ๋ก๊ทธ์ธ ํ์ด์ง)
- ์ ์์ค์ด๋ค. ์ฃ๋ค ํ๋์ฝ๋๋ก ๊ตฌํ์ค์ด๋ผ ๋์ค์ ๋ฆฌํฉํ ๋ง ์์ฒญ ํด์ผ ํ ๊ฒ ๊ฐ๋ค.
~ Trouble Shooting ~
1. ๋ฒํผ ์์์ฉ xml์ด ๋ ์ด์์ ์์์ ์ ์ฉ๋์ง ์๋ ๋ฌธ์
- ๋ฒํผ์ ๊ทธ๋ผ๋์ธํธ๋ฅผ ์
ํ๊ธฐ ์ํด button_background.xml์ ๋ง๋ค๊ณ ,
๋ ์ด์์ xml์์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ ๋ ฅํ๋๋ฐ ์ ์ฉ๋์ง ์์๋ค.
<Button
...
android:background="@drawable/button_background"
... />
- ํ์๋ถ์ด ์น์ ํ๊ฒ ์๋ ค์ฃผ์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ฒ ๋์๋ค.
- ๋งํฌ : Stackoverflow - Android Button background color not changing
- ๊ธฐ์กด์ Button ์ ์ธ ํํ๋ ๋ํดํธ ์์์ ์ด๊ธธ ์๊ฐ ์๊ณ ,
<androidx.appcompat.widget.AppCompatButton
</androidx.appcompat.widget.AppCompatButton>์ ํ์์ ์ฌ์ฉํด์ผ ๋ํดํธ ์์์ ์ด๊ธธ ์ ์๋ค. - 'android button background not working' ํค์๋๋ก ๊ตฌ๊ธ๋งํ์ จ๋ค๋๋ฐ, ํ๋ก์ ํธ ์งํํ๋ฉด์๋ ๋ฌด์กฐ๊ฑด ์์ด๋ก ์์นญํ๊ณ , ์คํ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ฐพ์๋ณด๋ ๋ฅ๋ ฅ์ ๊ฐ์ง์.
2. ๋น๋ ์ค๋ฅ
- Unable to match the desired swap behavior. ์ค๋ฅ๊ฐ ๋ด๋ค.
- ์๋ ๊ตฌ๋์ด ์ ๋๋ค๊ฐ, ๋ฉ์ธ ๋ ์ด์์ xml์์ constraint ๋ฐฐ์น ์ฐ๊ฒฐ์ ๋ง์ด ํ๊ณ ๋์๋ถํฐ ํด๋น ์ค๋ฅ๊ฐ ์๊ฒผ๋ค.
- Clear, Rebuild, ์บ์ ์ญ์ ๊น์ง ๋ชจ๋ ์งํํ๊ณ ๋ค์ ๋น๋ํด๋ ์ ๋๋ค.
Skipped 84 frames! The application may be doing too much work on its main thread.
- ์ฉ๋ ๋ฌธ์ ๋ก model๊ณผ view๋ฅผ ๋ถ๋ฆฌ์ํค๋ viewModel, ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ ์ง์ผ ํด๊ฒฐ๋๋ ๋ฌธ์ ์ธ๋ฏ ํ๋ฐ ๊ต์ฅํ ๋จ์ํ xmlํ์ผ ํ๋ ์ถ๋ ฅํ๋ ๋ฐ๋ ์ค๋ฅ๊ฐ ์๊ฒจ์ ์๋ฌธ์ด ๋ค์๋ค.
- ์ผ๋จ ์ฌ๋ฌ๋ฒ ๊ป๋ค ์ผ๋ ํด๊ฒฐ๋์๋๋ฐ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ํด๊ฒฐ์ ์๋๋ผ๋ ์๊ฐ์ด ๋ค์ด ๋์ค์ ๋ค์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
~ Retrospect ~
์๋ ํํด๋์์ 1๋ ํ๋์ ์ง์ ํ์ฌ/๊ธฐ์ฌ/์ทจ์ ๊น์ง ๋ชจ๋ ๋ฌผํ๋ฅด๋ฏ์ด ๋์๋ ๊ฑฐ ๊ฐ์๋ฐ, ์ด๋ฒ๋ ๋๋ 3์์ด ๋ ๋๊น์ง ๋ณ๋ค๋ฅธ ๊ตฌ์ฒด์ ์ธ ์งํ๋ฅผ ์ธ์ฐ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๋ค. ์ด๋ฒ ์ฃผ ์์ ์ฌํด 12์๊น์ง์ ์์ธ์ ์ธ ๊ฐ๋ณ ๋ชฉํ์ ๊ทธ์ ๋ฐ๋ฅธ ์ฑ๊ณผ ์งํ๋ฅผ ์ธ์์ผ๊ฒ ๋ค. ์ ๋ง ๋งค์ถ์ ๋ํ ์์ฌ์ด ์๋ค๋ฉด ๋งค์ถ์ ๋ํ ๋จ๊ธฐ 3๋ ๋ชฉํ๋ ์ธ์์ผ ํ ๊ฒ์ด๋ค.
๋งค์ผ ํ๋ฅด๋ ์๊ฐ๋ค์ ์ด๋ป๊ฒ ๋ถ์ก์๋์ง ๊ณ ๋ฏผํด๋ณด์.