2013-06-07 4 views
0

Как сохранить соотношение сторон изображения, например, 3: 4 на портрете, тогда это изображение должно быть преобразовано 9:16, когда перемещение устройства в ландшафте и изображение не должны растягиваться. Hoe может поддерживать это, пожалуйста, помогите мне заблаговременно.Как сохранить соотношение сторон изображения?

Мой код И это изображение, которое я хочу установить на переключателе изображения. Как поддерживать каждое изображение, установленное на imagewicher, должно быть соотношение сторон.

public View makeView() { 

     ImageView imageView = new ImageView(this); 

     imageView.setAdjustViewBounds(true); 
     WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
     Display display = window.getDefaultDisplay(); 

     imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
       display.getWidth(), LayoutParams.FILL_PARENT)); 
     imageView.setBackgroundResource(R.drawable.border); 
      imageView.setPadding(8, 8, 8, 8); 
     imageView.setImageBitmap(image); 
     imageView.setScaleType(ScaleType.FIT_XY); 
} 
+0

Надеюсь, что это поможет вам ,, [см это] [1] [1]: http://stackoverflow.com/questions/8232608/fit-image-into-imageview -keep-aspect-ratio-and-then-resize-imageview-to-image-d –

ответ

0

ScaleType.FIT_XY не сохраняет соотношение сторон. Это не для фотографий, но полезно для декоративных изображений. Попробуйте ScaleType.CENTER_CROP - ваше изображение будет обрезано, чтобы соответствовать рамкам обзора, или ScaleType.CENTER_INSIDE - ваше изображение будет масштабироваться, чтобы соответствовать рамкам обзора, поддерживая соотношение сторон изображения.

+0

и как насчет макета? –

+1

Но он не поддерживает соотношение сторон при перемещении устройства в landscape –

+0

Что не так в макете? Может быть, вы должны заменить display.getWidth() на LayoutParams.FILL_PARENT? Кажется, что display.getWidth() как LayoutParams.width - это грязный хак, который работает не очень хорошо во всех условиях. – FatalException

0

Вместо использования:

imageView.setBackgroundResource(R.drawable.border); 

Использование:

imageView.setImageResource(R.drawable.border); 

Также см this ответ.

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