2012-08-22 5 views
3

질감이있는 배경으로 꽤 힘듭니다. 60px x 60px 비트 맵 텍스처를 반복적 인 타일 패턴으로 레이아웃 레이아웃으로 설정하고 싶습니다.반복되는 배경 이미지가 늘어납니다.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/dark_texture_background" > 

    ... 
</RelativeLayout 

을 그리고 여기 당김 고해상도에있는 dark_texture_background /입니다 : 여기에 고해상도/레이아웃에있는 레이아웃 XML입니다

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/dark_background_texture" 
    android:tileMode="repeat" /> 

dark_background_texture는 60X60 픽셀 이미지입니다.

따라서 텍스처 이미지가 바둑판 식으로 표시되는 동안 확대되는 문제가 있습니다. I는 텍스처 화상이 있었다 정확히 볼 텍스처 화상의 외측에 적색 선을 첨가하고, 여기의 결과이다 : 또한의 GetResources에있어서, 폭 및 밀도 화면 높이를 첨가

Tiled Background

() .getDisplayMetrics().

화면 너비가 480 픽셀이기 때문에 텍스처 이미지는 8 배 (480/60 = 8) 반복되어야합니다. 대신, 5 ~ 1/4 만 있습니다. 이미지는 이제 ~ 90 픽셀이고 바둑판 식으로 배열되었습니다. WTF?

명시 적으로 반복하도록 말하면 왜 텍스처 이미지가 늘어 납니까?

답변

4

anyDensity=true을 설정 후 작동 시작 무언가 잘못되었습니다. 즉, drawable의 비트 맵 이미지는 mdpi으로 가정하고 거기에서 크기를 조정했을 것입니다 (아마 그 동작이 변경 되었습니까?). 이는 60px 이미지가 90px (60 * 1.5 비율 요소)가 된 것을 감안할 때 유용합니다.

비트 맵을 drawable-nodpi 폴더에만 배치하면 타일링 된 배경의 경우 중요하지만 중요하지 않을지라도 실제 크기는 밀도에 따라 달라질 수 있습니다. Android는 밀도에 관계없이 크기 조절없이 그 드로어 블을 사용합니다.

+0

많은 시간을 절약 해 주셔서 감사합니다! – Chewie

10

이것은 ICS가 수정 된 안드로이드 프레임 워크의 버그입니다. 어쨌든, 여기에 사전 ICS 버전 거친 해결 방법은 다음과 같습니다

public static void fixBackgroundRepeat(View view) { 
    Drawable bg = view.getBackground(); 
    if (bg != null) { 
     if (bg instanceof BitmapDrawable) { 
      BitmapDrawable bmp = (BitmapDrawable) bg; 
      bmp.mutate(); // make sure that we aren't sharing state anymore 
      bmp.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT); 
     } 
    } 
} 

는 타일 배경 세트 (즉 findViewById를()를)있는 모든 뷰에 적용합니다.

가끔 버그 나는 그들이 ICS에서 뭔가를 변경 한 경우 래 가브의이 버그를 참조 정확하게,하지만 확실히이 + 무엇인지 확실하지 않다 AndroidManifest.xml을

+1

정말 버그입니까? 나는 그것이 밀도 스케일링을하고 있기 때문에 그것이라고 생각할 것입니다. @Chewie는 당신의 이미지를'drawable-nodpi'에 두어 볼 수 있습니까? – kcoppock

+0

나는 꽤 확신한다. Romain 또는 Dianne의 Android 개발자 Google 그룹의 메일을 읽은 것을 기억합니다. –

+0

@kcoppock 이것은 그랬습니다! 외관상으로는/drawable의 이미지가 mdpi 크기라는 가정하에 전체 크기를 미리보고 싶었습니다. 제출하면 정확한 답을 던지겠습니다. – Chewie

관련 문제