Create Different Layouts
UX를 최적화 하기 위해서는 사이즈에 따라서 각기 다른 레이아웃을 제공해야 한다. 각 레이아웃은 적절한 리소스 디렉토리에 저장되어야 하며, 이름은 -<screen_size>
를 뒤에 붙이도록 한다. .예를 들어 large 사이즈의 화면의 레이아웃은 다음과 같다. res/layout-large/
.
Note: 안드로이드는 화면을 적절하기 맞추기 위해서 자동으로 레이아웃을 조정한다. 따라서 화면의 크기가 달라짐에 따라서 그안에 있는 UI요소의 절대적인 크기에 대해서는 걱정할 필요가 없다. 그대신 UX에 영향을 미치는 레이아웃의 구조에 초점을 맞춰야 한다. (예를들어 연관되어 있는 뷰들간의 사이즈나 위치등을 고려해야 한다)
예를들어 ,이 프로젝트에는 기본 레이아웃과 큰화면에서 대응되는 레이아웃이 존재한다.
MyProject/ res/ layout/ main.xml layout-large/ main.xml
파일이름은 반드시 같아야 하지만 컨텐츠는 다른 화면의 사이즈에 맞게 UI 를 제공하기 위해서 달라질 수 있다.
일반적으로 어플리케이션의 레이아웃 파일은 다음과 같이 참조 (레이아웃과 동일한 이름으로 지정)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
시스템은 당신의 앱이 실행되면 스크린의 사이즈에 맞춰서 크기에 해당하는 디렉토리의 레이아웃을 셋팅합니다. .안드로이드가 적절한 리소스를 선택하는 방법에 대해서는 다음 가이드를 참조한다. ( Providing Resources guide)
다른 예제는 화면방향(가로모드)에 대한 레이아웃 예제이다.
MyProject/ res/ layout/ main.xml layout-land/ main.xml
기본적으로 layout/main.xml
파일은 세로모드로 동작한다.
가로모드에서 특정한 레이아웃을 제공하고 싶다면, 레이아웃 폴더명에 large
와 land
구분자를 넣어주면 된다.
MyProject/ res/ layout/ # default (portrait) main.xml layout-land/ # landscape main.xml layout-large/ # large (portrait) main.xml layout-large-land/ # large landscape main.xml
Create Different Bitmaps
일반적으로 해상도에 따라서도 알맞은 비트맵을 제공해야 한다.
이런 비트맵을 생성하기 위해서는 벡터형식의 raw리소스로 만들어야 하며, 아래 종류에 맞는 이미지를 생성해야 한다.
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (baseline)
- ldpi: 0.75
이것은 200x200 는 xhdpi 디바이스를 위해서 , 150x150 은 hdpi 디바이스를 위해서 , 100x100은 mdpi 디바이스를 위해서 , 75x75 은 ldpi 디바이스를 위해서 각각 생성해야 됨을 의미한다
그리고 각각의 파일은 drawble 리소스 폴더에 적절한 위치에 저장해야 한다.
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png
@drawable/awesomeimage 에 접근하면 시스템은 화면의 해상도에 따라서 비트맵을 선택하여 제공한다.
'Programming' 카테고리의 다른 글
Android TestCase 빌드시 메모리 문제 (Robolectric) (0) | 2017.04.26 |
---|---|
안드로이드 MVC, MVP Pattern (0) | 2017.04.05 |
Android Clean Architecture (0) | 2017.04.03 |
다른 App으로 데이터 전달 하기 (0) | 2017.03.28 |
다른 App으로 부터 데이터 전달 받기 (0) | 2017.03.28 |