안드로이드, 대체 리소스는 어떤 것을 쓸까? 에 대한 실험 결과 |
모든 resource 가 제대로 박혀 있을 때는 당연히 자신의 resource 를 가져다 쓰는 것이 당연하다.
환경구성
아래 폴더에 각각 drawable.png 이라는 이미지 파일을 만들고, 각 이미지에는 문자로 해상도를 표기한다.
drawable
drawable-nodpi
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
실험 1 : xhdpi 단말에서 xhdpi resource 를 지웠다. 어느 것을 가져다 쓸까?
예상 : 가장 밀접한 해상도인 hdpi 혹은 아예 default 가 될 수 있는 drawable, drawable-nodpi 를 가져다 쓸 것이다.
결과 : hdpi 것을 가져다 쓴다.
실험 2 : 실험 1에 이어, 이번에는 hdpi 까지 지워보았다. 어느 것을 가져다 쓸까?
예상 : 위에서 가장 근접한 해상도 것을 가져다 썼으니, 이번에는 mdpi 것을 가져다 쓰지 않을까?
결과 : 미쳤다... 이상하게 no-dpi 것을 가져다 쓴다.. 이건 뭐지..? 1단계 낮은 녀석을 가져다 써서 안 되면 바로 no-dpi 로 가는 것일까?
실험 3 : 실험 2에 이어 no-dpi 것도 지워보자. 어느 것을 가져다 쓸까?
예상 : 그냥 drawable 을 가져다 쓸까?
결과 : 이번에는 mdpi 를 가져다 사용한다.. 뭔가 알기 어려운 규칙이로세.
실험 4 : mdpi 도 지워보자.
예상 : 이번에야말로 ldpi 를 가져다 쓰겠지?!!!!
결과 : 이번에는 그냥 drawable 을 가져다쓴다..
정리!!!
xhdpi 에 대한 우선순위는 xhdpi -> hdpi -> no-dpi -> mdpi -> drawable -> ldpi
자 이번엔 hdpi 장비를 가지고 실험해보자.
실험 1 : hdpi 단말에서 hdpi resource 를 지웠다.
예상 : xhdpi 것을 가져다 쓴다.
결과 : 빙고!!!
실험 2 : 실험 1에 이어 xhdpi resource 도 지웠다.
예상 : mdpi 것을 가져다 쓴다.
결과 : 빙고!!!!
실험 3 : 심험 2에 이어 mdpi resource 도 지웠다.
예상 : ldpi 것을 가져다 쓴다.
결과 : drawable 을 가져다 쓰네? 안드로이드.. 이 녀석 대체 뭐 하는 녀석일까??
더 이상 실험하지 않겠다.
정리!!
hdpi 에 대한 우선순위는 hdpi -> xhdpi -> mdpi -> drawable.
최종 결론!!
일반적으로 자신의 resource 가 없을 경우에는 1차적으로 가장 근접한 resource 를 가져다 쓴다.
그리고 이 때 higher resolution 을 가져다 쓴다.
xhdpi 는 hdpi 것을, hdpi 는 xhdpi 것을.
그 다음부터는 두서없이 적용되는 특성이 있으니,
가급적 가장 많이 쓰이는 xhdpi 와 hdpi 에 대한 resource 와 layout 은 준비하도록 한다.
참고로!!
이 실험은 drawable 에 대한 실험이었으며, 일반적으로 다른 resource 적용도 비슷하게 될 것이라 예상은 되지만, 지금의 실험에서 보았듯이 적용되는 rule 이 조금 이상한 관계로 다른 resource 들의 적용 순위에 대한 내용도 확신은 못 하겠다. ㅠ
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState (0) | 2013.09.21 |
---|---|
[Java] 언제 ArrayList 써야 하고 언제 LinkedList 를 써야 하나? (0) | 2013.09.20 |
[Java] Variable Argument 가변인자!? (0) | 2013.09.19 |
[android] Intent Filter 를 이용하여 link 처리하기. (0) | 2013.09.19 |
[android] WebView 의 위치가 갑자기 확 바뀌는 현상 (0) | 2013.09.17 |
댓글