2011-02-04 1 views
3

이것은 widespread problem 인 것 같습니다.이전 장치에 대한 지원을 잃지 않고 새로운 Dell Streak를 지원하도록 드로어 블 디렉토리를 설정하는 올바른 방법은 무엇입니까?

drwxr-xr-x 18 mike staff 612 Feb 4 17:28 drawable/ 
drwxr-xr-x 51 mike staff 1734 Feb 4 17:32 drawable-nodpi/ 
drwxr-xr-x 44 mike staff 1496 Feb 4 17:30 drawable-normal-mdpi/ 

내 XML 당김 자원 당김에 있습니다

나는 다음 당김 디렉토리를 가지고있다. 대형 mdpi (Dell Streak) 및 일반 hdpi (Droid, Nexus, Incredible 등) 용 리소스는 모두 drawable-nodpi로되어 있습니다. 정상 -mdpi (G1과 같은 구형 전화기)에 대한 리소스는 drawable-normal-mdpi입니다.

불행히도 Droid와 같은 일반 hdpi 전화는 drawable-nodpi 대신 drawable-normal-mdpi에서 리소스를 가져옵니다. 이는 How Android Finds the Best-matching Resource의 규칙 때문에 가능합니다.

그렇다면 어떻게해야 정상적인 -ddpi 장치 (예 : Droid) 및 일반 -mdpi 장치 (G1과 같은)와 같은 대형 mdpi 장치를 지원할 수 있습니까?

가장 간단한 해결책은 내 큰 리소스를 두 개의 사본으로 만드는 것입니다. 하나는 드로이드 용 normal-hdpi이고 다른 하나는 큰 mdpi로 만듭니다.하지만이 모든 리소스를 복제하지 않으려합니다.

업데이트

당 메이라의 제안, 나는 모든 리소스에 대한 별칭을 만들 수 있습니다. 그러나 별칭을 지정해야하는 많은 리소스가 있으므로 유지 관리가 앞으로 악몽이 될 수 있으므로 다른 솔루션을 기대합니다.

+0

commonsguy는이를 달성하기 위해 [빌드 도구] (https://groups.google.com/d/msg/android-developers/bRzcZ-wbYgM/5jZ1nJRpuE8J)를 구현하는 것이 좋겠지 만 다른 방법이 있기를 바랍니다. – emmby

답변

1

는에 "당김-nodpi-800 × 480은"합니다 (nodpi은 거기에 있어야하거나 실 거예요! 작업) 및 가 "당김 - 480x320을"당김 - 정상 - MDPI를 "이름 바꾸기 ".

+0

그렇다면 854x480 장치의 경우 drawable-nodpi-800x480의 사본을 만들어야합니까? – emmby

+0

예, 저는 WVGA854를 생각하지 않았습니다. 그래도 테스트를 해봤습니다. "drawable-nodpi"를 그대로두면 "drawable-normal-mdpi"를 "drawable-480x320"으로 변경하면 원하는대로 작동합니다. WVGA800, WVGA854 및 HVGA 에뮬레이터로 확인했습니다. – Chris

+0

나는 이것을 시험 할 것이다. 누구든지이 솔루션에 문제가 있으면 보시겠습니까? 예를 들어, 480x320 대신 320x480을보고하는 장치가 있습니까? 내 리소스를 특정 해결 방법에 맞게 만들지는 않겠지 만 갈 길이 멀지 않습니까? – emmby

1

별칭 리소스를 사용하여 복사하지 않고 리소스에 대한 포인터를 제공 할 수 있습니다. Alias Resources

+0

예, 비록 내가 디렉토리의 모든 리소스에 대해 그렇게해야한다는 것을 이해하고 있지만.거기에는 수십 가지가 있습니다. 따라서 하나 또는 두 가지를 잊어 버리면 결과를 쉽게 감지 할 수 없으므로 (더 빨리 실패하지는 않습니다)보다 안정적인 솔루션을 제공하는 것이 좋습니다. – emmby

0

drawable 폴더에 HDPI 리소스를 넣고 시도했지만 drawable-nodpi이 아니십니까? 당신의 "그릴 수-nodpi를"이름 바꾸기

+0

아니요,하지만 그렇게하면 hdpi 장치에서 자동으로 150 %까지 자동 확장 될 수 있습니다. 그렇습니까? – emmby

-1

확인이 가이드 : http://developer.android.com/guide/practices/screens_support.html

기본적으로, 레이아웃 작은 레이아웃 매체에 당김 - MDPI, 당김-hdpi에 등 및 레이아웃 파일에 드로어 블을 두어야 등 디렉토리. 따라서 레이아웃은 이고 화면 크기는이어야하며 드로어 블은 이어야하며 화면 밀도는이어야합니다.

+0

좋은 조언입니다. 감사합니다. 그러나 이것이이 문제를 해결하는지 확신 할 수 없습니다. Nexus S (예 :)와 Dell Streak에서 동일한 드로어 블을 사용하고 싶습니다. 전자는 hdpi이고 후자는 mdpi입니다. 질문에서 물어 보면, 어떻게 드로어 블을 복제하지 않을 수 있습니까? 레이아웃에 관한 것들은 흥미롭지 만 아마도 접선 적입니다. – emmby

0

나는 question 2 days before you과 같은 질문을했으며 솔루션에 가장 가까운 것은 별칭 리소스 (Mayra를 통해)를 사용하고있었습니다. 나는 이것을 처리하기 위해 파이썬 스크립트를 작성했다. 그것의 진짜로 나쁜 일 및 나는 바보 증거 해결책을 창조하는 충분한 결심이 있었다는 것을 바란다.

공유 리소스는 nodpi 폴더에 속하므로 Android에서 확장되지 않습니다.

관련 문제