2013-03-31 4 views
0

방금 ​​Android 앱에서 내 앱을 출시했으며 고밀도 디스플레이 고객에게 문제가있었습니다. 넥서스 10 안드로이드 버전 : 4.2.2 DisplayMetrics {밀도 = 2.0, 폭 = 2560, 높이 = 1504 scaledDensity 고밀도 디스플레이의 Android 레이아웃

난에서 무슨 일이 일어나고 있는지 볼 수있는 디버그 일을 추가, 여기

장치 하나 개의 샘플 출력 = 2.0 xdpi = 298.275, ydpi는 = 298.823} MAINVIEW = 0.0

메인 뷰 악보 영역에 1900 시간 = 1342 mDrumKitMode = BIG KitView = 640 (H) = 1,266 X = 1920.0 Y = W w 스크린 샷의 왼쪽, 1900 와이드 (MainView w = 1900 h = 1342) 드럼 킷은 640w 및 640 높이의 비트 맵입니다. 어떻게 든 디스플레이는 부모의 전체 높이가되도록 스케일링합니다 (KitView w = 640 h = 1266 x = 1920.0 y = 0.0). 이것은 density = 1.0 인 디스플레이에서는 발생하지 않습니다.

나는 어떤 이유로 든 큰 디스플레이에서 에뮬레이터 작업을 할 수 없으며 고밀도 태블릿이 없기 때문에 이것을 테스트 할 방법이 없습니다.

누구에게 무슨 일이 일어날 지 아이디어가 있습니까? A700 안드로이드 버전 : 감사

enter image description here

여기에 비슷한 문제

장치와 다른 고객의 4.1.1 DisplayMetrics {밀도 = 1.5, = 1920 폭, 높이 = 1128, scaledDensity = 1.5, xdpi = 224.73732, ydpi = 224.11765} 1,260 H = 1,044 mDrumKitMode = BIG KitView = 968, X = 1280.0 Y 640 H = 0.0

내 생각 = W 그것 scaledDensity = 1.5 파라미터, 어쩌면 필요 MAINVIEW = W 무언가를하는 것 e 자동 이미지 스케일링, 즉 scaledDensity = 1?

음악 표기법 디스플레이와 기본 드럼 키트 이미지 상단에 이미지를 오버레이하는 드럼 키트 디스플레이 모두에 대해 전체 애플리케이션이 정확한 픽셀 위치를 기반으로한다고 추가해야합니다 (드럼 페달이 이 이미지에서도 잘못된 위치). 다른 디스플레이 크기와 사용자 환경 설정에 맞게 앱 내부의 스케일링을 처리하므로 자동 스케일링을 원하지 않습니다.

또한 모든 내 드럼 키트 이미지가 drawable-mdpi에 있고 다른 모든 dpis는 비어 있다고 추가해야합니다. 이것은 내가 화면 크기와 사용자 환경 설정에 따라 프로그래밍 방식으로 이미지를 크기 조정하기 때문입니다. 그러나 문제는 아마도 xhdpi에 일부 이미지를 넣어야 할 필요가 있다고 생각합니까? 나는 그것을 할 수 있다고 생각하지만 그것은 많은 일이 될 것입니다.

PS는, 내가 여기 http://developer.android.com/guide/practices/screens_support.html

내 대답이 서로 다른 화면 밀도 기본적으로

에 대해 서로 다른 비트 맵 드로어 블을 제공 발견 생각, 안드로이드는 비트 맵 드로어 블을 (.PNG, .JPG, .gif 파일) 확장 및 Nine-Patch drawables (.9.png 파일)를 사용하여 각 장치의 적절한 물리적 크기로 렌더링합니다. 예를 들어, 응용 프로그램이 기준선, 중간 화면 밀도 (mdpi)에 대해서만 비트 맵 드로어 블을 제공하는 경우 시스템은 고밀도 화면에서는 배율을 높이고 저밀도 화면에서는 배율을 낮 춥니 다. 이 크기 조정은 비트 맵에 아티팩트를 유발할 수 있습니다. 비트 맵을 최상으로 보이게하려면 화면 밀도가 다른 다른 해상도의 대체 버전을 포함해야합니다.

단순히 모든 -mdpi 이미지를 -xhdpi로 복사하면 작동합니까?

답변

1

이 장치를 통해이 응용 프로그램을 사용하려는 경우 존재하는 모든 다양한 밀도 폴더 (xhdpi, xxhdpi, hdpi, mdpi)에 대한 이미지를 넣을 수밖에 없습니다. 포함하는 실제 레이아웃을 변경하고 다른 장치에 대해 다른 레이아웃을 제공하려는 경우 고려해야 할 가치가 있습니다.

처리 방법은 설명서를 참조하십시오. 그 너무 무거운 APK를 만드는 경우 http://developer.android.com/guide/practices/screens_support.html

다음 다른 길을 갈 단지에서 그 나라의 밀도 이미지를 사용하는 스케일링 그릴 수 폴더를 지정할 수 있습니다 (난 당신이 얼마나 많은 이미지 아무 생각이 없음) 장치. mdpi 장치 만 지원하려는 경우가 아니면 반드시 mdpi 만 사용하는 것은 잘못입니다.

+0

감사합니다. '크기 조정 불가능 드로어 블 폴더 지정'을 어떻게 지정합니까? – steveh

+0

나는 여기에 '당신이 안드로이드가 리소스를 미리 스케일하기를 원하지 않는 몇 가지 상황이 있습니다. 사전 크기 조정을 피하는 가장 쉬운 방법은 nodpi 구성 규정자를 사용하여 자원 디렉토리에 자원을 넣는 것입니다. 예 : res/drawable-nodpi ' – steveh

관련 문제