2013-02-25 2 views
7

저는 애플리케이션에서 일하고 있으며 ldpi에서 xhdpi까지 모든 리소스를 제공했지만 일부 타블렛은 hdpi (또는 테스트중인 넥서스 7의 경우 tvdpi)를 사용합니다. 그래서 태블릿에서 응용 프로그램을 열면 모든 것이 작아서 xhdpi 자원을 사용하도록하고 싶습니다. 어떻게 할 수 있습니까? 휴대폰의 모든에 enter image description here타블렛이 xhdpi 리소스를 사용하도록합니다

가 제대로 표시되어 미세

는 난 그냥 정제 또는 증가 할 응용 프로그램의 크기에 대해 별도의 파일을 생성하지 않으

는 xhdpi 자원은 작동합니다 크기가 큰 화면에서 작은 해상도의 애셋을 사용하기 때문에 태블릿이 문제가되므로 실제 크기 (4cm, 눈금자로 측정)는 정확하지만 실제로는 작아 보이고 전체 디자인이 올바르지 않습니다.

+0

불행히도 나는 당신이 응용 프로그램 수준에서 그것을 제어 할 수 있다고 생각하지 않습니다. AFAIK 밀도 "버킷"은 장치에 하드 코드되며, 하드 코딩 된 밀도 유형과 일치하는 리소스를 사용할 수있는 경우 항상 사용합니다. – FoamyGuy

답변

5

일반적으로 축소판은 가장 좋은 옵션 (up-scaling과 반대). 크기를 줄 였을 때 이미지의 품질이 저하되거나 느슨한 정보가 표시되지 않으면 res/drawable-xhdpi 폴더에 이미지의 2x 버전을 넣으십시오. Android는 저밀도 기기에서 이러한 이미지의 크기를 적절하게 조정합니다.

예. res/drawable-xhdpi에 64x64 픽셀 jpg/png을 넣으면 안드로이드는이를 mdpi 장치에서 32x32 픽셀, hdpi 장치에서 48x48 픽셀 이미지, xhdpi 장치에서 64x64 픽셀 이미지로 표시합니다.

이미지 크기를 줄이면 이미지 품질이 저하 될 수 있습니다 (예 : 축소 된 경우 이미지에서 1 픽셀 선이 사라질 때). 이미지의 변형을 drawable-mdpi, drawable- hdpi 등의 디렉토리. 댓글 후

업데이트 :

당신이 원하는 것은 이미지가 화면에 크게 표시 (높지 밀도 화면에)있을 수 있습니다. 이미지를 drawable-xhdpi 폴더에만 넣고 다음 작업을 수행하면됩니다.

예 :

고해상도/당김-xhdpi/one_of_my_images.png

고해상도/레이아웃/somelayout.xml

: 당신은 당신의 이미지 중 하나를 보여줍니다 이미지 뷰와 고해상도/레이아웃이 레이아웃을해야합니다
.... 
<ImageView 
    android:layout_height="@dimen/image_height" 
    android:layout_width="@dimen/image_width" 
    android:src="@drawable/one_of_my_images" 
    android:scaleType="fitCenter" 
    .... 
    /> 

입술/값/dimens.xml

.... 
<dimen name="image_height">100dip</dimen> 
<dimen name="image_width">150dip</dimen> 
.... 
,691 363,210

입술/값 대형/dimens.xml

.... 
<dimen name="image_height">150dip</dimen> 
<dimen name="image_width">225dip</dimen> 
.... 

입술/값-초대형/dimens.XML

.... 
<dimen name="image_height">200dip</dimen> 
<dimen name="image_width">300dip</dimen> 
.... 

당신이 볼 수 있듯이, 큰 화면, 더 큰 (딥에 따라서 인치) 이미지. res/values-xlarge-hdpi, res/values-xlarge-xhdpi 등의 dimens.xml에서 image_height 및 image_width에 대해 다른 값을 실험 해보고 가장 잘 보이는 부분을 볼 수 있습니다. 댓글 후

업데이트 2 : 적절한 리소스를로드 자신 만의 '사용자 지정'제도가 그들에게 ID의 고해상도/당김-nodpi 넣어하려는 경우 : 예
고해상도/당김-nodpi/one_of_my_images_normal.png 을 입술/그리기-nodpi/one_of_my_images_large.png 입술/그리기-nodpi/one_of_my_images_xlarge.png

이어서 (입술/그리기/입술/그리기 대형/입술/그리기-sw360dp/적절한 그리기 DIR 넣어

, 등등, 당신이 올 수있는 것이 무엇이든간에) 간접적으로 올바른 자원을 nodpi 디렉토리에서 참조하는 xml 파일 : 예 :

고해상도/당김 - 초대형 - MDPI는/my_images.xml

<resources> 
    .... 
    <item type="drawable" name="one_of_my_images">@drawable/one_of_my_images_large</item> 
    .... 
</resources> 

이 초대형 MDPI 화면을 위해, 안드로이드는 드로어 블-nodpi 디렉토리에서 'one_of_my_image_large.png를'로드된다는 것을 의미합니다.

+0

모든 장치에 대한 모든 리소스를 제공하려는 경우에도 문제가 발생하지 않습니다. xhdpi 만 제공 했더라도 시스템은 태블릿의 hdpi로 확장 할 수 있기 때문에 – DoubleP90

+0

아. 이미지의 크기를 유지하고 싶지는 않습니다. 대신, 당신은 * 더 높은 밀도 * 장치에서 이미지가 더 커지도록하고 싶습니까? 또는 * 더 큰 장치에서 이미지가 커지기를 원하십니까? –

+0

예를 들어 이미지가 10x10px (xhdpi)이고 7.5x7.5px (hdpi) 인 이미지를 대형 장치에서 확대하려면 태블릿에서 hdpi "7.7px"버전을로드해야합니다. 작게 보일 것입니다. 대신 xhdpi "10px"버전을로드해야하므로 이미지가 더 많은 공간을 차지하고 더 커 보입니다. 그래서 당신이 통치자를 잡고 그것을 타블렛으로 측정한다면 그것은 xhdpi 전화보다 더 커야합니다. 기본적으로 인치 단위로 예를 들면 더 커야합니다. – DoubleP90

관련 문제