728x90
728x170
크기를 표시하는 단위
- 뷰의 폭과 높이는 일반적으로
match_parent
와wrap_content
값을 지정하는 방식으로 사용함.- 단말마다 해상도나 화면의 크기가 달라도 전체 화면을 기준으로 뷰를 배치할 수 있기 때문
- 뷰의 크기를 픽셀 값으로 지정하면 해상도에 따라 그 크기가 다르게 보이지만,
match_parent
와wrap_content
를 사용하면 아주 쉽게 여러 단말의 해상도를 지원할 수 있음.
- 뷰의 폭과 높이를 정수 값으로 지정하면서도, 픽셀 단위인
px
가 아니라dp
나sp
와 같은 단위를 사용할 경우- 해상도가 다른 단말에서도 뷰의 크기를 비슷하게 보이도록 만들 수 있음.
단위 | 단위 표현 | 설명 |
px |
픽셀 | 화면 픽셀의 수 |
dp 또는 dip |
밀도 독립적 픽셀(Density Independent Pixel) | 160dpi 화면을 기준으로 한 픽셀 예) 1인치 당 160개의 점이 있는 디스플레이 화면에서 1dp 는 1px 와 같음. 1인치 당 320개의 점이 있는 디스플레이 화면에서 1dp 는 2px 와 같음. |
sp 또는 sip |
축척 독립적 픽셀(Scale Independent Pixel) | 텍스트 크기를 지정할 때 사용하는 단위 가변 글꼴을 기준으로 한 픽셀로 dp 와 유사하나, 글꼴의 설정에 따라 1sp 당 픽셀수가 달라짐. |
in |
인치 | 1인치로 된 물리적 길이 |
mm |
밀리미터 | 1밀리미터로 된 물리적 길이 |
em |
텍스트 크기 | 글꼴과 상관없이 동일한 텍스트 크기 표시 |
dp
나dip
- 해상도에 비례하는 비슷한 크기로 보이게 할 때 사용함.
- 해상도가
160dpi
인 작은 화면에서 20픽셀이던 버튼 크기를320dpi
인 약간 큰 화면에서는 40픽셀의 크기로 보이게 함. - 따라서 해상도별로 일일이 크기를 다시 지정하지 않아도 됨.
- 뷰의 크기 뿐만 아니라 텍스트의 크기를 지정하는 데도 사용됨.
sp
나sip
- 글꼴을 기준으로 한 텍스트 크기를 나타냄.
- 뷰의 크기에서는 사용되지 않음.
- 글자를 표시하는 텍스트뷰나 버튼의 텍스트 크기는
sp
단위 사용을 권장함. - 사용자가 단말기의 설정에서 글꼴이나 폰트 크기를 바꾸는 경우가 있는데,
sp
단위를 사용해야 설정에 맞추어 글자 크기가 바뀜.
- 뷰에는
dp
, 글자 크기에는sp
단위를 사용하는 것이 좋음.- 실제로 앱 화면을 만들 때는
dp
단위를 주로 사용함.- 안드로이드 단말은 다양한 화면 크기와 해상도를 가지고 있는데,
dp
단위를 사용하면 단말의 해상도에 따라 비율로 픽셀 값이 계산 되므로 대부분의 화면에서 비슷한 크기로 보이게 만들 수 있음.
- 안드로이드 단말은 다양한 화면 크기와 해상도를 가지고 있는데,
- 텍스트의 크기를 지정할 때는
sp
를 권장함.- 텍스트 크기에
dp
를 지정한다고 해서 문제가 생기지는 않지만,sp
단위를 사용해야 단말의 글꼴 설정에 맞추어 표시되는 글자 크기가 바뀔 수 있음.
- 텍스트 크기에
- 실제로 앱 화면을 만들 때는
- 예) 일반적인 스마트폰 크기 (3~4인치)의 단말과 태블릿 크기(7~10인치)의 단말은 화면 크기와 해상도가 다른데, 이 화면의 중앙에 버튼을 배치하고 화면의 절반 크기 정도로 보여주고 싶을 경우
dp
단위를 쓰면 2개 단말에서 비슷한 크기로 보이도록 자동으로 맞춰줌.
728x90
그리드형(광고전용)
'Programming > Android' 카테고리의 다른 글
[안드로이드] 코드가 입력되었을 때 필요한 import 구문을 자동으로 넣을 수 있도록 설정하기 (안드로이드 스튜디오) (0) | 2021.06.02 |
---|---|
[안드로이드] 합성 프로퍼티(Synthetic Property)를 사용한 뷰 바인딩(View Binding) (0) | 2021.04.10 |
[XML] widget.SwitchCompat (0) | 2021.04.09 |
[안드로이드] kotlinx.android.synthetic.main.activity_main.* 를 불러올 수 없는 경우 (0) | 2021.04.08 |
인터페이스 (Interface) & 추상 클래스(Abstract Class)와 어댑터(Adapter) (0) | 2017.05.09 |
스피너 (Spinner) (0) | 2017.05.06 |
Getter, Setter 함수 (0) | 2017.05.05 |
다른 클래스에 MainActivity 클래스 전달 (0) | 2017.05.05 |