2015-04-07 2 views
1

Я устанавливаю ресурс изображения (jpeg) в ImageView с размерами 877x3719. Однако, когда я запускаю приложение, он говорит мне:Изображение магически увеличивается в размерах при установке в ImageView

W/OpenGLRenderer﹕ Bitmap too large to be uploaded into a texture (2631x11157, max=4096x4096) 

Это ровно утроит размеры оригинального изображения. Кто-нибудь знает, как и почему он утроит размеры без каких-либо изменений в моем java-коде, который говорит об этом? Ниже расположение XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/scrollView2" > 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/testlay"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView1" 
      android:contentDescription="@string/imageph" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView2" 
      android:contentDescription="@string/imageph" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView3" 
      android:contentDescription="@string/imageph" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView4" 
      android:contentDescription="@string/imageph" /> 
    </LinearLayout> 
</ScrollView> 
</LinearLayout> 
+1

Нет ссылок на какие-либо чертежи там, как вы устанавливаете изображение на своих ImageViews? Я предполагаю, что ваш drawable находится в папке 'drawable', попробуйте поместить ее в' drawable-nodpi'. –

ответ

0

ImageView имеет свой размер, измеренный в провалов (устройство не зависит пиксель), который может быть различным для устройств с различной плотностью экрана (например, регулярной и «сетчатка» iPhone).

Но когда мы установили для него изображение, для максимального качества нам нужно присвоить значение для каждого экрана , поэтому ваши размеры изображения «утроены» - за один пропадёт три пикселя экрана.

+0

Я явно исказил изображение при настройке его на изображение с помощью: imageView1.setImageBitmap (Bitmap.createScaledBitmap (BitmapFactory.decodeResource (getResources(), R.drawable.rsz_17_18_21), 877,3719, true)); Является ли это эффективным способом решения этой проблемы в три раза или есть лучшее решение? – AuthenticReplica

+1

Вы можете поместить свой drawable в 'drawable-nodpi', чтобы избежать автоматического масштабирования вместо создания масштабированного растрового изображения. В вашем случае вы создаете 2631x11157 путем предварительного масштабирования сначала (это будет сделано Android автоматически), а затем уменьшите его до 877x3719. Это может повлиять на производительность и использование памяти (и качество изображения тоже) – OleGG

+0

'drawable-nodpi', безусловно, является правильным решением. – Peter

Смежные вопросы