본문 바로가기
프로그래밍/DB/JAVA/안드로이드/GAE

[안드로이드] drawable 폴더들의 의미 설명

by 아유카와 2011. 4. 7.
출처 : http://blog.naver.com/dualwield?Redirect=Log&logNo=100094916758

 
일반적으로 서적과 설명들을 보면 drawable에 대해서만 이야기 하고 있는데,

이클립스에서 안드로이드 프로젝트를 생성하면 res/ 폴더안에 drawable과 관련된 3개의 파일이 생성됩니다.

drawable-hdpi, drawable-ldpi, drawable-mdpi의 용도에 대해서 알고 싶습니다.


>> 네이버 지식iN에서 답변했던 내용입니다. 그냥 퍼옴..~_~


안녕하세요. 안드로이드 app 개발자 dualwield 입니다.

위에 언급하신 drawable-hdpi, drawable-ldpi, drawable-mdpi 는
해상도에 따라서 알맞게 이미지를 보여줄 수 있도록 기존의
단순한 drawable 을 세분화한 것입니다.

즉, 다양한 해상도를 지원할 수 있도록 해놓은 것입니다.
일반적으로 작업시에는 drawable-mdpi 폴더에 이미지 넣고 작업하시면 됩니다. (일반적인 폰 화면 비율)

질문자께서 보고 계신 서적은 아마도 1.5 버전을 기준으로 작성된 것일것입니다.
이 해상도 관련에 대한것은 android SDK 1.6 버전 부터 적용된 것이므로
1.5 를 기준으로 작성된 서적 등에는 언급이 없습니다.
(아주 사소한 것입니다. 책에 누락되었다고 다시 살 필요가 없는것^^)

좀 더 풀어서 설명하면,
1.0~1.5 버전까지는 drawable 에 출력하고자 하는 png 등의 이미지 리소스를 넣어놓고
코드를 통해서 출력하도록 했을때 동일한 이미지로 320X480 (HVGA)해상도를 기준이었습니다.(devphone 과 동일)

하지만, 1.6 버전부터는 단순하게 고정된 해상도가 아닌,
가변적인 해상도를 지원합니다.
즉, 휴대폰만이 아닌 노트북과 같은 다양한 기기에서 기존과 다른 QVGA, WQVGA, WVGA 등의 다양한 해상도도 지원할 수 있도록 업데이트 되었죠.
개발할때 누가 어떤 해상도의 단말을 가지고 있는지 모르기 때문에 각 해상도에 맞게 이미지를 제작해서 넣어놓으면
됩니다. 뒷배경 같은 경우 자동적으로 화면에 맞게 늘릴수 있고, 버튼 등 이미지도 나인패치라는 방식으로 png 파일을
제작하면 알맞게 보기 좋게 배치가 되기도 합니다. 하지만 적당히 배치되는 것을 원치 않을때는 세부적으로 다양한 해상도에 맞게 이미지를 미리 제작해서 폴더에 넣어두면 되겠죠?



아래 도표 참고하시면 위 글은 다 의미가 없을지도 모르겠네요
ps. 좀더 자세한 것은 아래 링크 참고하세요
추가적으로, res/layout-480x800 , res/drawable-480x800 와 같이 사용해도 된다고 하네요.

현재 해상도 구하는 것은
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

View에서는 아래 것으로 사용하면 된다. ( context 만 구할 수 있는 곳이면 어디든~! )
int mWidth = context.getResources().getDisplayMetrics().widthPixels;
int mHeight = context.getResources().getDisplayMetrics().heightPixels;

-> 위의 내용은 아래와 같이 사용하시면 된다는 의미에요~^^ 질문하시는 분이 계셔서 살짝 추가합니다.
int mWidth = getContext().getResources().getDisplayMetrics().widthPixels;
int mHeight = getContext().getResources().getDisplayMetrics().heightPixels;