2011-01-25 15 views
7

Bu nedenle, ekranın alanına bağlı olarak bir resmin boyutunu değiştirmem gerekiyor. Görüntü, ekran yüksekliğinin yarısı kadar olmalıdır, aksi halde bazı metinler çakışır.Android Ekran Boyutuna bağlı olarak görüntü boyutunu değiştirme?

So Height = 1/2 Ekran Yüksekliği.

Display myDisplay = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int width =myDisplay.getWidth(); 
int height=myDisplay.getHeight(); 

Ama nasıl java görüntü yüksekliğini değiştirmek olacaktır: Boy Oranı ben bir şey buldum

(Aynen boy oranını tutmaya çalışıyorum) * Genişlik = Yükseklik? veya mümkünse XML? Çalışan bir cevap bulamıyorum.

cevap

17

Bunu LayoutParams kodu ile yapabilirsiniz. Ne yazık ki, XML aracılığıyla yüzdeleri belirtmenin bir yolu yoktur (doğrudan değil, ağırlıklar ile karışıklık yaratabilirsiniz, ancak bu her zaman yardımcı olmayacaktır ve en boy oranınızı korumaz), ancak bu sizin için çalışmalıdır:

//assuming your layout is in a LinearLayout as its root 
LinearLayout layout = (LinearLayout)findViewById(R.id.rootlayout); 

ImageView image = new ImageView(this); 
image.setImageResource(R.drawable.image); 

int newHeight = getWindowManager().getDefaultDisplay().getHeight()/2; 
int orgWidth = image.getDrawable().getIntrinsicWidth(); 
int orgHeight = image.getDrawable().getIntrinsicHeight(); 

//double check my math, this should be right, though 
int newWidth = Math.floor((orgWidth * newHeight)/orgHeight); 

//Use RelativeLayout.LayoutParams if your parent is a RelativeLayout 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    newWidth, newHeight); 
image.setLayoutParams(params); 
image.setScaleType(ImageView.ScaleType.CENTER_CROP); 
layout.addView(image); 

Aşırı karmaşık olabilir, belki daha kolay bir yolu olabilir? Yine de ilk denemem.

+0

Bunu çalıştırmayı denediğimde bir güç kapatılıyor gibi görünüyor. Eğer bu hiç yardımcı olmazsa, LogCat altında, “Yakalanmamış işleyici: işlenmemiş istisna nedeniyle iş parçacığı ana çıkışı” alıyorum. Bunun ne anlama geldiğinden tam olarak emin değilim. Ps.Im hala android için yeni – QQWW1

+1

Eh, bu tür bir genelleştirilmiş örnek, durumunuz elbette değişecektir (değişken isimleri, XML ids, vb). LogCat altında, hangi özel durumun oluştuğu ve dosyanın hangi satırında olduğu izlenmelidir. – kcoppock

+0

Ahhh ... Ben yanlış yaptığımı görüyorum, benim ImageView benim RelativeLayout için "R.id.rootlayout" yerine .. Teşekkürler !!!! – QQWW1