2011-07-12 14 views
52

Bir görüntünün tamamını, bir ImageView boyutunun tamamını büyütmek için ölçeklendirmek istiyorum. Bu, fit_center, görüntü en boy oranı, ImageView'ın en boy oranıyla tam olarak eşleşmiyorsa, görüntü çevresinde bantlar bırakacağından, scaleType=fit_center kullanmadan çok farklıdır. Bunun yerine, kırpılmış herhangi bir fazlalık ile görüntünün tamamlayıcı görünümü doldurması için ortalanmasını ve ölçeklenmesini istiyorum. Bu iyi çalışırGörüntüyü ImageView'ın tamamını doldurmak için bir görüntüyü ölçeklendirin.

final Display display = getWindowManager().getDefaultDisplay(); 
final float screenWidth = display.getWidth(); 
final float screenHeight = display.getHeight(); 
final float imageWidth = splashView.getDrawable().getIntrinsicWidth(); 
final float imageHeight = splashView.getDrawable().getIntrinsicHeight(); 
final Matrix splashMatrix = new Matrix(); 
final float scale = Math.max(screenHeight/imageHeight,screenWidth/imageWidth); 
splashMatrix.postScale(scale, scale); 
splashView.setImageMatrix(splashMatrix); 

ama daha kolay bir uzaklıkta olmalıdır gibi görünüyor:

I) onCreate (sırasında kendi özel görüntü matrisi hesaplayarak bunu gerçekleştirmek mümkün. Bir görüntüyü, hem görüntünün en boy oranını korurken hem de tamamen ImageView içine doldurarak bir ImageView'da bir görüntüyü büyütmenin bir yolunu biliyor mu?

(Not: benim durumumda istenen görüntü boyutunu bulmak için benim ImageView tam ekran kaplıyor, bu yüzden getWindowManager().getDisplay() kullanmak Sen görünüm ortaya koydu edilmemiştir çünkü henüz splashView.getWidth()/getHeight() kullanabilir ve gelmez olamaz. 't Boyutuna sahip ol'

cevap

116

android:scaleType="centerCrop"'u kullanabilirsiniz. Görüntü oranını korur ve resmi istediğiniz gibi ölçeklendirir.

fazla bilgi için aşağıdaki linke kaçırdım nasıl

http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType

+1

geçmesi lütfen? – emmby

+2

En boy oranını tutmuyor! Layout_height = wrap_content, layout_width = fill_parent var ve en boy oranı gitti, resmin ekran genişliği var, ancak yükseklik yanlış (yüksek olması gereken yüksekliğin% 40'ı gibi). –

+9

Sadece yukarıdaki yorumumda sorunu çözdüm: android: adjustViewBounds = "true". –

İlgili konular