์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Kotlin
- MySQL
- CS
- join
- ์๊ณ ๋ฆฌ์ฆ
- ๊ธฐ์ ๋ฉด์
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์๋ฃ๊ตฌ์กฐ
- ์ฝํ๋ฆฐ
- ์ฝํ
- doitandroid
- ์ธํ๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ ์ฒ๊ธฐ
- java
- ํผ๊ณตํ
- Android
- SQL
- ์ค๋ธ์
- ํผ๊ณต๋จ
- ์นด์นด์ค์ฝํ
- ์๋ฐ
- ํผ๊ณต์ฑ๋ฆฐ์ง
- ์คํฐ๋
- select
- ์๋๋ก์ด๋์คํ๋์ค
- groupby
- Til
- ์๋๋ก์ด๋
- Today
- Total
Welcome! Everything is fine.
[Android] ๋ ์ด์์ ๊ธฐ์ด ๋ณธ๋ฌธ
๐ ์ ์ฝ ์กฐ๊ฑด ์ดํดํ๊ธฐ
์๋๋ก์ด๋ ๊ธฐ๋ณธ ๋ ์ด์์์ ์ ์ฝ ๋ ์ด์์(Constraint Layout)์ด๋ค. ์ ์ฝ ๋ ์ด์์์ด๋ ๋ทฐ์ ์์น๋ฅผ ๊ฒฐ์ ํ ๋ ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ๋ ๋ ์ด์์์ด๋ค.
- ์ ์ฝ ์กฐ๊ฑด(Constraint) : ๋ทฐ๊ฐ ๋ ์ด์์ ์์ ๋ค๋ฅธ ์์์ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋๋์ง ์๋ ค์ฃผ๋ ๊ฒ. ๋ทฐ์ ์ฐ๊ฒฐ์ (Anchor Point)๊ณผ ๋์(Target) ์ฐ๊ฒฐ.
- ๋ถ๋ชจ ๋ ์ด์์(Parent LAyout) : ์๋ฅผ ๋ค๋ฉด, ๋ฒํผ์ ์ ์ฅ์์ ์์ ์ ๊ฐ์ธ๊ณ ์๋ ๋ ์ด์์.
๋ค์์ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ ๋ชจ์ต์ด๋ค. ๋ฒํผ ์/ํ/์ข/์ฐ์ ์๋ ๋๊ทธ๋ ์ฐ๊ฒฐ์ (ํธ๋ค)์ ๋ง์ฐ์ค๋ก ์ก์๋์ด ๋ถ๋ชจ ๋ ์ด์์๊ณผ ์ฐ๊ฒฐํ๋ค. ์ฌ๊ธฐ์ ๋ถ๋ชจ ๋ ์ด์์์ด ์ฐ๊ฒฐ ํ๊น์ด ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ฐ๊ฒฐ์ ๊ณผ ํ๊น์ ์ฐ๊ฒฐํ๋ค๋ฉด ์ฐ๊ฒฐ์ ์ด ํ๋์์ผ๋ก ๋ฐ๋๋ฉฐ ์ฐ๊ฒฐ์ ์ด ์๊ธด๋ค. ์ฌ๊ธฐ์ ๊ธฐ์ตํด์ผํ ์ ์ ๋ ์ด์์ ์์์ ๋ฒํผ์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ค๋ฉด ์ ์ด๋ ์ผ์ชฝ๊ณผ ์์ชฝ์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํ๋ค๋ ์ ์ด๋ค. ์ฆ, ๊ผญ ํ์ํ ์ ์ฝ ์กฐ๊ฑด์ ๋ ๊ฐ๋ฉด ๋๋ค.
โ ํ๊น์ด ๋ ์ ์๋ ๊ฒ
- ๊ฐ์ ๋ถ๋ชจ ๋ ์ด์์ ์์ ๋ค์ด ์๋ ๋ค๋ฅธ ๋ทฐ์ ์ฐ๊ฒฐ์
- ๋ถ๋ชจ ๋ ์ด์์์ ์ฐ๊ฒฐ์
- ๊ฐ์ด๋๋ผ์ธ
โ ์ฐ๊ฒฐ์ ์ด ๋ ์ ์๋ ๊ฒ
- ์์ชฝ(Top), ์๋์ชฝ(Bottom), ์ผ์ชฝ(Left/Start), ์ค๋ฅธ์ชฝ(Right/End)
- ๊ฐ๋ก์ถ์ ๊ฐ์ด๋ฐ(CenterX), ์ธ๋ก์ถ์ ๊ฐ์ด๋ฐ(CenterY)
- ๋ฒ ์ด์ค๋ผ์ธ(ํ ์คํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ทฐ์ธ ๊ฒฝ์ฐ์๋ง ์ ์ฉ)
์ค๋ฅธ์ชฝ ์์ฑ์ฐฝ์ ๋ค์๊ณผ ๊ฐ์ด Constraint Widget์ ๋ณผ ์ ์๋ค. ์ฐ๊ฒฐ์ ์ ์ ํ์๋ ๋ง์ง(Margin)์ ์กฐ์ ํ์ฌ ๊ฑฐ๋ฆฌ๋ฅผ ์ง์ ํ ์ ์๋ค.
- ๋ง์ง(Margin) : ์ฐ๊ฒฐ์ ๊ณผ ํ๊น๊ณผ์ ๊ฑฐ๋ฆฌ. ์ซ์๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ง์ฌ์ ์กฐ์ ํ ์ ์์.
๐ ํ๋ฉด ๊ฐ์ด๋ฐ์ ๋ทฐ ๋ฐฐ์นํ๊ธฐ
๋์์ธ ํ๋ฉด ์๋จ์ ์๋ ์์ ๋ชจ์์ ์์ด์ฝ(Autoconnection)์ ํ์ฑํ ์ํค๋ฉด ๋ฒํผ์ ๊ฐ์ด๋ฐ์ ๋จ์ ๋, ๋ค์๊ณผ ๊ฐ์ด ๋ฒํผ์ ๋ชจ๋ ์ฐ๊ฒฐ์ ์ด ์๋์ผ๋ก ์ฐ๊ฒฐ๋๋ค.
๋ง์ฝ ์ ํํ ํ๊ฐ์ด๋ฐ๊ฐ ์๋๋ผ ์ด๋ ํ ์ชฝ์ผ๋ก ์น์ฐ์น๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์ค๋ฅธ์ชฝ ์์ฑ์ฐฝ์์ ์ธ๋ก ๋ฐฉํฅ ๋ฐ์ด์ด์ค(Vertical Bias)์ ๊ฐ๋ก ๋ฐฉํฅ ๋ฐ์ด์ด์ค(Horizontal Bias)๋ฅผ ์กฐ์ ํ๋ฉด ๋๋ค. ์ฆ, ํ๋ฉด์ ๋น์จ๋ก ๋๋ ํ ์ด๋ ๊ณณ์ ์์น ์ํฌ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ด๋ค.
์์ฑ ์ฐฝ์ ๋ ์์ธํ ์ดํด๋ณด์๋ฉด, ์ด ์ฌ๊ฐํ ์์ชฝ์ ์๋ >> ๋ชจ์์ ์ ์ ๋ทฐ์ layout_width์ layout_height๊ฐ ์ด๋ป๊ฒ ์ค์ ๋์๋์ง ํ์ํ๋ ์ ์ด๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ด ์ธ ๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์๋ค.
โ ๋ถ๋ชจ ์ฌ์ ๊ณต๊ฐ ์ฑ์ฐ๊ธฐ : layout_width์ ๊ฐ์ match_constraint๋ 0dp๋ก ์ค์ , ๊ตฌ๋ถ๊ตฌ๋ถํ ์ ์ผ๋ก ํ์
โ ๋ทฐ์ ๋ด์ฉ๋ฌผ ์ฑ์ฐ๊ธฐ : layout_width์ ๊ฐ์ wrap_content๋ก ์ค์ , ์ค์์ ํฅํ๋ ํ์ดํ(>>)๋ก ํ์
โ ๊ณ ์ ํฌ๊ธฐ : layout_width์ layout_height์ ๊ฐ์ ์ง์ ํ ๊ฐ์ผ๋ก ์ค์ , ์ง์ ์ผ๋ก ํ์
๐ ๊ฐ์ด๋๋ผ์ธ ์ฌ์ฉํ๊ธฐ
- ๊ฐ์ด๋๋ผ์ธ(Guideline) : ์ฌ๋ฌ ๊ฐ์ ๋ทฐ๋ฅผ ์ผ์ ํ ๊ธฐ์ค ์ ์ ์ ๋ ฌํ ๋ ์ฌ์ฉ. ํ๋ฉด์ ์ถ๊ฐํ ์ ์๋ ์์์ด์ง๋ง, ๊ทธ ํฌ๊ธฐ๊ฐ 0์ด๊ณ ํ๋ฉด์์ ๋ณด์ด์ง ์์ ์ค์ ํ๋ฉด์ ๊ตฌ์ฑ ์์๋ ์๋.
- ๊ฐ์ด๋๋ผ์ธ์ ๋์์ธ ํ๋ฉด ์์ชฝ์์ [Guidelines] ์์ด์ฝ์ ๋๋ฌ ์ถ๊ฐํ๋ค.
Vertical Guideline์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ธ๋ก์ค์ ๊ฐ์ด๋๋ผ์ธ์ด ์๊ธฐ๊ณ , ์ ์ ์ ์์ง์ฌ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋ค.
๐ XML ์๋ณธ์ ์ถ๊ฐ๋ ์์ฑ ํ์ธํ๊ธฐ
์ค์ ์ฑ์ ๋ง๋ค ๋๋ ๋์์ด๋ ๋๊ตฌ๋ฟ๋ง์๋๋ผ XML ์๋ณธ ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ๋ ์ธ์ธํ๊ฒ ์์ ํ๋ค. [Code]๋ฅผ ๋๋ฌ ์๋ณธ XML์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๋์ผ๋ก ์ ๋ ฅ๋ ์์ฑ๋ค์ด ๋ค์ด์๋ค.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
๊ฐ์ฅ ์์ชฝ์ ์ค์ ์ด ํ์ผ์ด XML ํ์์ผ๋ก ๋ ๊ฒ์์ ์๋ ค์ฃผ๋ ์ค์ด๋ค.
<?xml version="1.0" encoding="utf-8"?>
๊ทธ ๋ค์ ์ ๋ ฅ๋ ํ๊ทธ๊ฐ ํ๋ฉด ์ ์ฒด๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๋ ์ด์์์ด๊ณ , ์์ ํจํค์ง ์ด๋ฆ์ด ๋ถ์ด์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ConstraintLayout์ด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถ๋ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ํจํค์ง ์ด๋ฆ๋ ํจ๊ป ๊ธฐ๋กํ ๊ฒ์ด๋ค. ๋, ๋ค์๊ณผ ๊ฐ์ xmlns:android ์์ฑ์ XML ๋ ์ด์์ ํ์ผ์ด๋ผ๋ฉด ํ ๋ฒ์ฉ ๋ฃ์ด์ค์ผํ๋ ์์ฑ์ผ๋ก, ํ๋์ ํ์ผ์ ํ ๋ฒ๋ง ์ฌ์ฉ๋๋ฉด ๋๋ค. ์ด xmlns๋ค์ ์๋ android๋ผ๋ ์ด๋ฆ์ด ๋๋จธ์ง ์์ฑ์ ์ ๋์ด๋ก ์ฐ์ธ๋ค.
xmlns:android="http://schemas.android.com/apk/res/android"
โ xmlns๋ค์ ์๋ ์ ๋์ด์ ์๋ฏธ
์ ๋์ด | ์๋ฏธ |
xmlns:android | ์๋๋ก์ด๋ ๊ธฐ๋ณธ SDK์ ํฌํจ๋์ด์๋ ์์ฑ์ ์ฌ์ฉํ๋ค. |
xmlns:app | ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจํ๋ ์์ฑ์ ์ฌ์ฉํ๋ค.(app์ด๋ผ๋ ๋จ์ด๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋์ฒด ๊ฐ๋ฅ) |
xmlns:tools | ์๋๋ก์ด๋ ์คํ๋์ค์ ๋์์ด๋ ๋๊ตฌ ๋ฑ์์ ํ๋ฉด์ ๋ณด์ฌ์ค ๋ ์ฌ์ฉํ๋ค. ์ฑ์ด ์คํ๋ ๋๋ ์ ์ฉ๋์ง ์๊ณ ์๋๋ก์ด๋ ์คํ๋์ค์์๋ง ์ ์ฉ๋๋ค. |
โ android:id ์์ฑ
- ๋ทฐ๋ฅผ ๊ตฌ๋ถํ๋ ๊ตฌ๋ถ์ ์ญํ ์ ํ๋ค.
- ์ฉ๋
- XML ๋ ์ด์์ ํ์ผ ์์์ ๋ทฐ๋ฅผ ๊ตฌ๋ถํ ๋
- XML ๋ ์ด์์ ํ์ผ์์ ์ ์ํ ๋ทฐ๋ฅผ ์๋ฐ ์์ค์์ ์ฐพ์ ๋
- ์ ์ฝ ๋ ์ด์์์์ํ๋์ ๋ทฐ๋ฅผ ๋ค๋ฅธ ๋ทฐ์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ XML ์์ฑ์ ์ด๋ฆ ๊ท์น์์ ์ฌ์ฉ๋๋ค.
layout_constraint[์์ค ๋ทฐ์ ์ฐ๊ฒฐ์ ]_[ํ๊น ๋ทฐ์ ์ฐ๊ฒฐ์ ] = "[ํ๊น ๋ทฐ์ id]"
- id ์์ฑ ๊ฐ ์ ์ํ๋ ๋ฐฉ๋ฒ
@+id/์์ด๋ ๊ฐ
๐ ํฌ๊ธฐ๋ฅผ ํ์ํ๋ ๋จ์์ ๋ง์ง
์ฑ์ ๋ง๋ค ๋ ์ ๊ฑฐ๋ฆฌ ๋จ์๋ก dp๋ฅผ ์ฌ์ฉํ๋์ง ๊ถ๊ธ์ฆ์ด ๋ค ์ ์๋ค. px์ ํด์๋์ ๋ฐ๋ผ ๊ทธ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๊ฒ ๋ณด์ด์ง๋ง dp๋ sp์ ๊ฐ์ ๋จ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด์๋๊ฐ ๋ค๋ฅธ ๋จ๋ง์์๋ ๋ทฐ์ ํฌ๊ธฐ๋ฅผ ๋น์ทํ๊ฒ ๋ณด์ด๋๋ก ๋ง๋ค ์ ์๋ค. ๋ค์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋จ์์ ๊ทธ ์๋ฏธ์ด๋ค.
๋จ์ | ๋จ์ ํํ | ์ค๋ช |
px | ํฝ์ | ํ๋ฉด์ ํฝ์ ์ |
dp ๋๋ dip | ๋ฐ๋ ๋ ๋ฆฝ์ ํฝ์ (density independent pixel) | 160dpi ํ๋ฉด์ ๊ธฐ์ค์ผ๋ก ํ ํฝ์ |
sp ๋๋ sip | ์ถ์ฒ ๋ ๋ฆฝ์ ํฝ์ (scale independent pixel) | ํ ์คํธ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉํ๋ ๋จ์. ๊ฐ๋ณ ๊ธ๊ผด์ ๊ธฐ์ค์ผ๋ก ํ ํฝ์ ๋ก dp์ ์ ์ฌํ๋ ๊ธ๊ผด์ ์ค์ ์ ๋ฐ๋ผ 1sp๋น ํฝ์ ์๊ฐ ๋ฌ๋ผ์ง. |
in | ์ธ์น | 1์ธ์น๋ก ๋ ๋ฌผ๋ฆฌ์ ๊ธธ์ด |
mm | ๋ฐ๋ฆฌ๋ฏธํฐ | 1๋ฐ๋ฆฌ๋ฏธํฐ๋ก ๋ ๋ฌผ๋ฆฌ์ ๊ธธ์ด |
em | ํ ์คํธ ํฌ๊ธฐ | ๊ธ๊ผด๊ณผ ์๊ด์์ด ๋์ผํ ํ ์คํธ ํ ๊ธฐ ํ์ |
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] ์๋ก์ด ๋ ์ด์์ ๋ง๋ค๊ธฐ (0) | 2022.02.23 |
---|---|
[Android] ๋ทฐ ์ ๋ ฌํ๊ธฐ (0) | 2022.02.23 |
[Android] ์ฝ๋๋ฅผ ์์ ํ๋๋ฐ๋ ์๋ฌ๊ฐ ๋จ๋ ๊ฒฝ์ฐ (0) | 2022.02.17 |
[Android] ๋ทฐ(View)์ ๋ทฐ์ ํฌ๊ธฐ ์์ฑ (0) | 2022.02.17 |
[Android] New Project๋ง๋ค๊ธฐ, MainActivity.java์ activity_main.xml (0) | 2022.02.17 |