Android ๋ฆฌํฉํ ๋ง์ ๋ํ์ฌ
์์ฑ์ : ๋ฐํ์
Present Time : 2018โ08-09-THU
๋ฆฌํฉํ ๋ง์ ๊ฒ์ผ๋ก ๋๋ฌ๋๋ ์ฝ๋์ ๊ธฐ๋ฅ์ ๋ฐ๊พธ์ง ์์ผ๋ฉด์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ์์ผ๋ก ์ํํธ์จ์ด ์์คํ ์ ์์ ํ๋ ๊ณผ์ ์ด๋ค. ๋ฒ๊ทธ๊ฐ ์๊ธธ ๊ฐ๋ฅ์ฑ์ ์ต์ํํ๋ฉฐ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๋ ์ ์ ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ปดํจํฐ๊ฐ ์ธ์ ๊ฐ๋ฅํ ์ฝ๋๋ ๋ฐ๋ณด๋ผ๋ ์์ฑํ ์ ์์ง๋ง, ์ธ๊ฐ์ด ์ดํดํ ์ ์๋ ์ฝ๋๋ ์ค๋ ฅ ์๋ ํ๋ก๊ทธ๋๋จธ๋ง ์์ฑํ ์ ์๋ค.
colors.xml
๊ณผ dimens.xml
๋ถํฐ ์์ ํ๋ ๊ฒ์ด ์ข๋ค.
์๋ํ๋ฉด, style.xml
๊ณผ themes.xml
์ด color์ dimens์ ์์กดํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ ์ฌ์ง์ ๋ณด๋ฉด style.xml์์ color์ dimens์ ์์กด์ฑ์ ๊ฐ๊ณ ์๋ ๊ฒ์ ์ ์ ์๋ค.
๋ฐ๋ผ์, ๋ฆฌ์์ค๋ฅผ ๋ฆฌํฉํ ๋งํ ๋๋ ๋จผ์ ์ปฌ๋ฌ์ ๋๋ฉ์ (ํฌ๊ธฐ)์ ์์ ํ๋ ๊ฒ์ด ์ข๋ค.
colors.xml
์ ์ฑ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์์ ์ ์ํ๋ค.
๋๋ ์๋ ๋ชจ๋ ์์์ ์์์์ด ์ ๋ฆฌํด ๋์๋๋ฐ ์น์ ์ ๋๋์ด ์ปฌ๋ฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ๋ค.
Greyscales ๊ณผ Quipper colors ๋๊ฐ์ง ์น์ ์ผ๋ก ๋๋๋ค. (๋๋ฌด ๋ง์ ์น์ ์ ๋ง๋๋ ๊ฒ๋ณด๋ค๋ ๋๊ฐ์ง๋ก ๊ฐ๋จํ๊ฒ ๋๋๋ ๊ฒ์ผ๋ก๋ ์ถฉ๋ถํ๋ค.)
Greyscales ์น์ ์๋ ํฐ์, ๊ฒ์์, ํ์์ ์ ์ํ๋๋ฐ, ๋ค์ด๋ฐ ๊ท์น์ ์ ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ค.
- grey1, grey2, grey3
- grey darker, grey lighter
2๋ฒ๊ณผ ๊ฐ์ด ๋ค์ด๋ฐ์ ํ๋ฉด ๋ค์ํ ํ์ ์กฐ ์์์ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋๋ฐ, 'grey white', 'grey whiter', 'grey whitest' ๋ก๋ ์ดํดํ๊ธฐ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ 1๋ฒ๊ณผ ๊ฐ์ด ๋ค์ด๋ฐ ๊ท์น์ ์ ํ๋ค.
(ํ์ง๋ง, ์์ ์๊ฒ ๋ ์ฝ๋ฉํ๊ธฐ ์ฌ์ด ๋ค์ด๋ฐ ๊ท์น์ผ๋ก ์ ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. )
Quipper colors ์น์ ์์๋ ์ฑ์์ ์ฌ์ฉํ๋ ํน์ ์์์ ์ ์ํ์๋ค.
"warning", "danger" ๋ฑ ๊ฐ์ ์ด๋ฆ๋ ์ฌ์ฉํ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค.
dimens_base.xml
๊ณผ dimens.xml
๋ ํ์ผ์ ์ ์ํ๋ ๊ฒ์ด ์ข๋ค.
dimens_base.xml
: ์์ด์ฝ, ํ
์คํธ, ๋ฒํผ ๋ฑ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ ์
space, text, button, radius, elevation ๋ฑ์ผ๋ก ์น์ ์ ๋ง๋ ๋ค.
dimens.xml
: ํน์ ํ์ด์ง์ ํฌ๊ธฐ๋ฅผ ์ ์
์ปฌ๋ฌ์ ๋๋ฉ์
์ ๋ฆฌํฉํ ๋ง ํ์ผ๋ ์ด์ ํ
๋ง์ ์คํ์ผ์ ๋ฆฌํฉํ ๋งํ๋ฌ ๊ณ ๊ณ ๊ณ ~~
ํ ๋ง๋ฅผ ์ฌ์ฉํด์ ๊ฐ ์ปดํฌ๋ํธ์ ์๋์ฐ ๋ฐฑ๊ทธ๋ผ์ด๋, ์ปฌ๋ฌ, ์ฌ์ด์ฆ ๋ฑ ๊ณตํต ์์ฑ์ ์ ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์คํ๋์ ์กํฐ๋นํฐ๋ ํฌ๋ช ํ ํ ๋ง๋ฅผ ์ฌ์ฉํด์ ๋ฐฐ๊ฒฝ์์ ํฌ๋ช ํ๊ฒ ํ ์ ์๋ค.
themes.xml์ styles.xml๊ณผ ๋น์ทํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ๋์ด ๋ถ๋ฆฌ๋์ด ์๋ ๊ฒ์ผ๊น?
๋์ด ๊ตฌ์กฐ๋ ๊ฑฐ์ ๊ฐ์ง๋ง styles.xml
์ด ์ข ๋ ๋น๋ฒํ๊ฒ ์
๋ฐ์ดํธ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
ํ ๋ง๋ก ์ ์ฉํ๋ฉด ์ ์ฉํ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ฒ์ (์กํฐ๋นํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ) ์ ๋ชจ๋ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๋ค. ์คํ์ผ์ ๋ ๋ก์ปฌ์ด๋ค.
style.xml
์ ํ์ผ ๋ช๊ฐ๋ก ๋ถ๋ฆฌ.
styles_login.xml
์ด๋ styles_messages.xml
๋ฑ ๊ณผ ๊ฐ์ด ํน์ ํ์ด์ง๋ฅผ ์ํ ๋ค๋ฅธ ์คํ์ผ์ ๋ง๋ ๋ค.
styles.xml
์๋ ์์ด์ฝ, ํ
์คํธ, ๋ฒํผ ์ฒ๋ผ ๊ธฐ๋ณธ ์คํ์ผ์ ์ ์ํ๋ค.
๋ฏธ๋ฆฌ ์์ฑ๋ค์ ์ ์ํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ. ๋ ์ด์์์ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์๋ค.
.
์ผ๋ก ์ฐ๊ฒฐํด์ ์คํ์ผ์ ์์์ํฌ ์ ์๋ค.
๋ค๋ฅธ ์ปฌ๋ฌ์ ๋ฒํผ ์คํ์ผ์ด ํ์ํ๋ฉด Button.Primary
๋ฅผ ๋ง๋ค๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์ ํ
์คํธ์ปฌ๋ฌ ์์ฑ๋ง ์ ์ํ๋ฉด ๋๋ค.
์ง๊ธ๊น์ง ์์์ด ๋ค๋ฅด๊ฑฐ๋ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ฉด style์ ๊ฐ๊ฐ ๋ฐ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๋๋ฐ ์์ ๊ฐ๋ ์ ์ด์ฉํ๋ฉด ์ฝ๋๊ฐ ๋ง์ด ์ค์ด๋ค๊ฒ ๊ฐ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฑ์ ๋๋ฌด ๋ง์ drawable์ด ์์ผ๋ฏ๋ก ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ฝ๊ฒ drawable์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ด๋ฆ ํ๋ฆฌํฝ์ค๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค.
์์ด์ฝ ์ด๋ฆ์
-
"๊ตฌ์ฑ์์"๊ฐ ์๋๋ผ "๋ชจ์"์ ํฌํจํด์ผ ํ๋ค.
์๋ฅผ๋ค์ด, ๋น๋์ค ํ๋ ์ด ์์ด์ฝ์ด ์๋ค๋ฉด ์ด ์์ด์ฝ์ ์ฌ์ด๋ ํ๋ ์ด๋ก๋ ์ฌ์ฉ๋ ์ ์์ผ๋ฏ๋ก
ic_video_play
๋ณด๋ค๋ic_play
๋ผ๊ณ ์ด๋ฆ ์ง๋ ๊ฒ์ด ์ข๋ค. -
์ปฌ๋ฌ๋ฅผ ํฌํจํ์ง ์์์ผ ํ๋ค.
์ด๋ฆ์ ์ปฌ๋ฌ๋ฅผ ํฌํจํ์ง ์์ ์ด์ ๋ ํดํธ ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฏธ์ง ๋ทฐ๋ ํดํธ ์์ฑ์ด ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Drawable์ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ ์ด๋ ต๊ธฐ๋ณด๋ค๋ ๊ท์ฐฎ์ ์ผ์ ๊ฐ๊น๋ค.
๋จผ์ , ์ฌ์ฉํ์ง ์๋ ๋๋ก์ด๋ธ์ ์ญ์ ํ๋ค. ์ ์ด์ ์ฌ์ฉํ์ง ์๋ ๋๋ก์ด๋ธ์ ์์ ๋ฉด ๋ฆฌ๋ค์ด๋ฐํ๋ ๋ฐ ์๊ฐ์ ์ฐ์ง ์์๋ ๋๋ค.
๋ค์ ๋จ๊ณ๋, ๋ชจ๋ ์์ด์ฝ ์ด๋ฆ์ ๋ฆฌ๋ค์ด๋ฐ ํ๋ ๊ฒ์ด๋ค.
์์ด์ฝ์ ๋ณ๊ฒฝํ ๋ค์์ผ๋ก๋ ๋จ๊ณ์ ์ธ ๋ฆฌํฉํ ๋ง์ ์ํด ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ค.
๋ง์ง๋ง์ผ๋ก ๋ค๋ฅธ ๋๋ก์ด๋ธ์ ์กฐ๊ธ์ฉ ๋ฆฌ๋ค์ด๋ฐ ํ๋ค.
๋ฆฌํฉํ ๋ง์ ์ฃผ๋ ์์ ์ ์ฝ๋๋ฅผ ํฌ์ฅํ๋ ๋ฉ์๋๋ฅผ ์ ์ ํ ์ ๋ฆฌํ๋ ๊ฒ์ด๋ค. ๊ฑฐ์ ๋ชจ๋ ๋ฌธ์ ์ ์ ์ฅํฉํ ๋ฉ์๋๋ก ์ธํด ์๊ธด๋ค.
์ด๋ค ์ฝ๋๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด๋ ๋๊ฒ ๋ค๊ณ ํ๋จ๋ ๋๋, ๊ทธ ์ฝ๋๋ฅผ ๋นผ๋ด์ด ๋ชฉ์ ์ ์ ๋ํ๋ด๋ ์ง๊ด์ ์ด๋ฆ์ ๋ฉ์๋๋ก ๋ง๋ค์.
๋ฉ์๋ ์ถ์ถ ๊ธฐ๋ฒ์ ์ ์ผ ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ฉ์๋๊ฐ ๋๋ฌด ๊ธธ๊ฑฐ๋ ์ฝ๋์ ์ฃผ์์ ๋ฌ์์ผ๋ง ์๋๋ฅผ ์ดํดํ ์ ์์ ๋, ๊ทธ ์ฝ๋๋ฅผ ๋นผ๋ด์ด ๋ณ๋์ ๋ฉ์๋๋ก ๋ง๋ ๋ค.
์ง๊ด์ ์ธ ์ด๋ฆ์ ๊ฐ๊ฒฐํ ๋ฉ์๋๊ฐ ์ข๋ค. ์๋ํ๋ฉด
- ๋ฉ์๋๊ฐ ์ ์ ํ ์๊ฒ ์ชผ๊ฐ์ ธ ์์ผ๋ฉด ๋ค๋ฅธ ๋ฉ์๋์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
- ์์ ๊ณ์ธต์ ๋ฉ์๋์์ ์ฃผ์ ๊ฐ์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ฝ์ด๋ค์ผ ์ ์๋ค.
- ์ฌ์ ์ํ๊ธฐ๋ ํจ์ฌ ์์ํ๋ค.
๊ธด ๋ฉ์๋์ ์ต์ํด์ง ์ฌ๋์ ์ ์ชผ๊ฐ์ง ๊ฐ๊ฒฐํ ๋ฉ์๋์ ์ต์ํด์ง๊ธฐ๊น์ง ์๊ฐ์ด ์ข ๊ฑธ๋ฆฐ๋ค. ๋ฉ์๋ ๋ด์ฉ์ด ๊ฐ๊ฒฐํ ๊ฒ๋ ์ค์ํ์ง๋ง, ํจ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ๋ฉ์๋์ ์ด๋ฆ๋ ์ ์ง์ด์ผ ํ๋ค.
์ผ์ผ์ด 1,2,3,4 ๋ชจ๋ view๋ฅผ inflateํ ํ์ ์์ด ์๋์ ๊ฐ์ด + ๊ธฐํธ๋ฅผ ์ฌ์ฉํด ํ๋ฒ์ ํด์ฃผ๋ฉด ๋๋ค.
์กฐ๊ฑด์ ? ํผ์ฐ์ฐ์1 : ํผ์ฐ์ฐ์2
์กฐ๊ฑด์์ ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ true ์ด๋ฉด ๊ฒฐ๊ณผ๋ ํผ์ฐ์ฐ์1์ด๊ณ , ์กฐ๊ฑด์์ ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ false ์ด๋ฉด ๊ฒฐ๊ณผ๋ ํผ์ฐ์ฐ์2 ์ด๋ค.
// 3ํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ ๋
int a = (5>4) ? 50 : 40;
// 3ํญ ์ฐ์ฐ์ ๋์ if-else๋ฌธ์ ์ฌ์ฉํ์ ๋
int a = 0;
if(5 > 4){
a = 50;
}else{
a = 40;
}
position = getArguments() != null ? getArguments().getInt("position") : 0;
for each๋ผ๋ ๋ช ๋ น์ด๊ฐ ๋ฐ๋ก ์๋ ๊ฒ์ด ์๋๊ณ ๊ธฐ์กด๊ณผ ๋์ผํ for๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง, ๋ณดํต ๋ค๋ฅธ ์ธ์ด์์ for each๋ผ๊ณ ๋ง์ด ํ๋ฏ๋ก ์๋ฐ์์๋ ๋ณดํต for each๋ฌธ์ด๋ผ๊ณ ๋งํ๋ค.
๋จ, for each๋ฌธ์ ๋ฐ๋ก ๋ฐ๋ณตํ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ฃผ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๊ณ , 1์คํ ์ฉ ์์ฐจ์ ์ผ๋ก ๋ฐ๋ณต๋ ๋๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
// ๊ธฐ์กด for ๋ฌธ
String[] numbers = {"one", "two", "three"};
for(int i=0; i<numbers.length; i++) {
System.out.println(numbers[i]);
}
// for each ๋ฌธ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝ
String[] numbers = {"one", "two", "three"};
for(String number: numbers) {
System.out.println(number);
}
// ๋ณ๊ฒฝ์
for (int i = 0; i < reviewCnts.length; i++) {
if (reviewCnts[i] > max) max = reviewCnts[i];
}
// ๋ณ๊ฒฝํ
for(int reviewCnt : reviewCnts){
if (reviewCnt > max) max = reviewCnt;
}
for๋ฌธ๋ณด๋ค for each๋ฌธ์ด ํ์ดํ์ ์๋ ์๊ณ ๊ฐ๋ ์ฑ์ด ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๋ฆฌํฉํ ๋ง์ ๊ฑฐ์ฐฝํ ๊ฒ์ด ์๋๋ค. ๋ณ์๋ ๋ฉ์๋์ ์ด๋ฆ์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ฐ๊พธ๋ ๊ฒ๋ ์์ ๋ฆฌํฉํ ๋ง์ ์๊ฐ ๋๋ค.
๊ฐ๋ฐ์๋ก์ ์ฝ๋์ ํ์ง์ ์๊ฐํ๊ณ , ํ์ ํ ๋ ๊ฐ์ด ์ผํ๋ ๊ฐ๋ฐ์๋ค์ ์๊ฐํ๊ฒ ๋๋ค๋ฉด ๋ฆฌํฉํ ๋ง์ ๋์ฑ ์ค์ํด์ง ๊ฒ ๊ฐ๋ค.
-
๋ฆฌํฉํ ๋ง : ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๋ ๊ฐ์ฒด์งํฅ ์ฌ๊ณ ๋ฒ (๋งํด ํ์ธ๋ฌ ์ง์)
-
์ํํธ์จ์ด ์ ์ทจ๋ฅผ ์ ๊ฑฐํ๋ ๋ฆฌํฉํ ๋ง : ๊ตฌ์กฐ์ ์ค๊ณ ๋ฌธ์ ๋ฅผ ํ์ด๋ด๋ ์ต์ ์ ์ค์ฒ๋ฒ (๊ธฐ๋ฆฌ์ฌ ์์ผ๋๋ผ์ผ๋ ์ธ 2๋ช ์ง์)
โ