2014-10-14 2 views
2

Я хочу иметь ImageView фиксированного соотношения х/у на всех экранах. например, известное соотношение 16/9. И я также хочу, чтобы ImageView был как можно большим. как я могу сделать это в android? Большое спасибо.Как исправить масштаб изображения

+0

ли соотношение сторон вы хотите происходит от изображения, или вы хотите, чтобы заставить его? – forcewill

+0

Я хочу заставить его – MOHRE

ответ

1

выше ответ будет изменять соотношение сторон.

Вы не можете достичь своей цели, только изменив файл макета xml. Вы должны сделать это в Java-коде.

Основные шаги:

  1. прочитать файл изображения в растровое изображение, и получить начальную ширину и высоту и соотношение сторон битовой карты.
  2. рассчитать коэффициенты масштабирования для й и у размерности соответственно, и использовать меньшие один из двух факторов масштабировать изображение

    factorX= ScreenWitdhInPixel/ImgWidth
    factorY= ScreenHeightInPixel/ImgHeight
    factor= (factorX<factorY?factorX:factorY)

  3. масштабировать изображение с использованием значение коэффициента, рассчитанное на этапе 2

    Matrix matrix = new Matrix(); matrix.postScale(factor, factor); Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);

Пожалуйста, обратитесь к этому сообщению на полный пример: ImageView fit without stretching the image

+1

Вы должны объяснить свой ответ здесь, а затем добавить необходимые ссылки. – afzalex

0

Вы должны установить андроид: scaleType = "fitXY" для вашего изображения.

И если вы хотите, чтобы ваш ImageView быть как его родитель, вы можете написать эти строки кодов:

android:layout_width="match_parent" 
android:layout_height="match_parent" 
Смежные вопросы