안드로이드/이론

[ 안드로이드 ] 해상도 대응, 다양한 화면 크기 지원

dongx._.2 2023. 1. 31. 19:18

 

졸업 작품을 진행하기 전 여러가지 이론이나 기술 스택들에 대해 정확히 이해하고 있어야할 것 같았다.

 

이번 졸업 작품은 UI/UX적으로도 꽤 신경쓰고 있기 때문에 가장 먼저 해상도 대응 방법에 대해서 정리를 해야할 것 같았다.

 

해당 포스트에서는 안드로이드 공식 문서에서 제공하는 해상도 대응 방법에 대해서 정리 해보고자한다.

 

 

유연한 레이아웃 만들기

먼저 다양한 기기에 대응하기 위해서는 작은 변화에도 반응하는 유연한 레이아웃을 만들어야한다.

그 방법들은 아래와 같다.

1. ConstraintLayout 사용하기

공식 문서에서 가장 먼저 제안하는 방법은 ConstraintLayout을 기본 레이아웃으로 사용하는 것이다.

 

ConstraintLayout 특성상 절대 위치가 아닌 상대 위치(뷰끼리의 공간적 관계)를 이용하기 때문에, 화면 크기가 변경될 때 모든 뷰가 같이 이동하고 확장될 수 있다.

 

모든 기기를 ConstraintLayout만으로 해결할 수는 없지만 (특히 동적으로 로드되는 목록 등) 좋은 방법이기는하다.

 

특히 안드로이드 스튜디오에서는 아래와 같이 Layout Editory를 제공하기 때문에 ConstraintLayout을 더욱 쉽게 구성할 수 있는 장점이 있다.

 

2. 하드 코딩 레이아웃 크기 사용하지 않기

안드로이드 공식 문서에서 layout_widthlayout_height 속성에 하드 코딩(고정 크기로 지정)을 하지 않을 것을 권장하고 있다.

 

당연히 고정 크기로 잡으면 해상도 대응에 어려운 건 당연한 얘기인 듯하다.

 

특히, LinearLayout에서 가중치(weight) 속성을 사용할 땐 주의해야한다.

 

중첩 LinearLayout에서 가중치(weight) 속성을 사용하면 시스템이 여러 레이아웃을 거쳐 각 뷰의 크기를 판단해야 하므로 성능 저하를 일으킬 수 있다.

 

ConstraintLayout의 경우 성능에 영향 없이 LinearLayout으로 가능한 거의 모든 레이아웃 구현이 가능하므로, ConstraintLayout 사용을 권장하고 있다.

 

참고ConstraintLayout을 사용할 때 match_parent를 사용하면 안 된다. 대신 크기를 0dp로 설정하여 'match constraints'를 사용한다. 'match constraints'는 match_parent와 일반적으로 동일하다. 자세한 내용은 ConstraintLayout에서 뷰 크기를 조정하는 방법을 참조

 

 

모든 화면 크기로 테스트

해상도 대응에 있어서 가장 중요한 것은 다양한 화면 크기에서 테스트를 해보는 것이다.

에뮬레이터를 이용해서도 가능하고, Firebase Test Lab을 이용하면 다양한 기기에서 테스트가 가능한 것 같다.

 

졸업 작품을 진행하면서 Firebase Test Lab을 통해서 테스트를 해봐야겠다.