개발/안드로이드 App

[팁] density를 고려한 어플리케이션 만들기

소혼 2010. 6. 28. 23:57
반응형


최종 바이너리를 만들면서 확인하다가 큰 실수를 했다는 것을 알았습니다. density에 관한 것입니다.
에고 덕분에 완빵 고생을 하고 이 글을 적습니다. 혹시 이 글을 보시는 분은 배포 전에 꼭 resolution 독립적인지 확인하셔서 저같은 실수를 안하시길 빕니다.

일단 density를 위해 아래와 같은 점을 고려하면 될 것 같습니다.

1. 프로젝트를 만들 때, 반드시 min-sdk를 지정합시다.
프로젝트를 만들 때, min-sdk에 기본값이 없어도 프로젝트가 생성이 되지만 이렇게 만들어진 프로젝트는 hdpi 해상도에 대해 제대로 처리할 수 없습니다. 에뮬레이터가 큰 값을 갖더라도 그렇습니다.


2. px를 쓰지 말고 dp를 씁시다
최대한 레이아웃에 좌표계를 쓰지 않는 것이 좋지만 꼭 써야 한다면, dp를 쓰도록 합시다. dp는 해상도의 변경에 자유롭습니다.

3. 만약 소스코드에서 고쳐야 한다면 아래 코드처럼 DisplayMetric을 이용해 변환합니다.
DisplayMetrics metrics = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.density의 값은 hdpi 타겟의 경우 1.5 mdpi의 경우 1.0이 반환됩니다.
원하는 좌표계에 이 값을 곱하면 적당한 위치에 그려지는 것을 알 수 있습니다.

4. 이미지 크기에 주의합시다
이미지가 용량이 크면 메모리 오류가 발생할 수 있습니다.


허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.
반응형