2011-01-25 6 views
7

Так что мне нужно изменить размер изображения в зависимости от области экрана. Изображение должно быть на половину высоты экрана, потому что в противном случае оно перекрывает некоторый текст.Android Изменение размера изображения в зависимости от размера экрана?

So Высота = 1/2 Высота экрана. ширина = высота * Соотношение сторон (как раз пытается сохранить пропорции те же)

я нашел то, что было:

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

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

ответ

17

Вы можете сделать это с помощью LayoutParams в коде. К сожалению, нет способа указать проценты через XML (не напрямую, вы можете обходиться с весами, но это не всегда поможет, и оно не будет поддерживать соотношение сторон), но это должно работать на вас:

//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); 

Может быть, сложнее, может быть, есть более простой способ? Это то, что я сначала попытался.

+0

Кажется, я получаю Force Close, если попытаюсь запустить это. Если это вообще помогает, то в LogCat я получаю «Неотправленный обработчик: поток, выходящий из-за неперехваченного исключения». Я не совсем уверен, что это значит. Ps.Imo новичок в android все еще – QQWW1

+1

Ну, это своего рода обобщенный пример, ваша ситуация будет изменяться, конечно (имена переменных, XML-идентификаторы и т. Д.). В LogCat он должен иметь след того, какое исключение произошло, и в какой строке файла. – kcoppock

+0

Ahhh ... Я вижу, что я сделал не так, я заменил «R.id.rootlayout» для моего ImageView, а не моего RelativeLayout .. Спасибо !!!! – QQWW1

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