Android - изображение Кнопка Масштаб

? mFeinstein @ | Original: StackOverFlow
---

Hi,

Я пытаюсь вместить рисунок внутриImageButton для тестирования, а путьImageButton ведет себя не как ожидалось.

Первоначально, я сделал988x89 пикселей PNG изображение и поместить его вImageButton, который находится в 7inches 1024x600 пикселей эмулируемым экране. ImageButton Является 988dp х 89dp, я знаю, DP не то же самое как пиксели, но за эту резолюцию, я ожидал, что изображение в масштабе себя разумно занимают большую частьImageButton . Также я изменил пикселей вместо DP для тестирования и это не имело никакого значения.

Но вместо того, чтобыImageButton сделал изображение внутри него очень мало ( синие линии являются ImageButton границы изеленая линияиндикация Выровнять по центру ) .

Android - изображение Кнопка Масштаб

так вопрос № 1 : ПочемуImageButton сделать образ, как большой, так как это такой маленький, когда он мог бы заполнить большую часть экрана, даже сImageButton размер будучи очень широко?

Таким образом, чтобы преодолеть это, я выбрал adjustViewBounds, который не имеет никакого значения, вообще, что приносит Вопрос № 2 : Почему? НеНастроить вид границы, как предполагается, настроить вид границы ?

Код сих пор является :

<ImageButton
        android:layout_width="988dp"
        android:layout_height="89dp"
        android:id="@+id/ibTest"
        android:src="@drawable/image_top_test"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:cropToPadding="false"
        android:layout_below="@+id/hlTopBar"
        android:background="#00000000" />

Так позже я изменил scaleType до fitCenter иизображение стали:

Android - изображение Кнопка Масштаб

Что странно для меня, как хорошо, так какImageButton имеет тот же формат, что и изображения, так что я бы ожидать, что она подходит на 100%, но это не подобает (естьразрыв в ширину с обеих сторон изображения ) .

Так позже я изменил scaleType до fitXY, и я получил свой окончательный результат:

Android - изображение Кнопка Масштаб

Который, кажется, ожидаемый изображения после всех ( по сравнению изображение, fitXY к образу fitCenter в Photoshop показывает, чтоfitCenter изображение слегка овальной формы, но она не может быть показано здесь, который, как ожидается, так как ширина не соответствует изображение каквысота делает).

Так что мой общий вопрос (# 3 ): Что это правильный путь для установки изображения в Android, и ожидать, что она есть, это размер регулярного на экране, и почемумасштабирование так грязно, и я делаю это неправильно ?

Я знаю, что есть диагональю экрана вопросы и дп и т.д., номасштабирование ведет себя не контролируемым образом, fitCenter делает изображения овал, и fitXY слишком много зависит от меня установив правильный соотношение изображения на XY, так что я интересно, если я делаю что-то неправильно и как это должно бытьправильно.

Final XML code:

<ImageButton
        android:layout_width="988dp"
        android:layout_height="89dp"
        android:id="@+id/ibTest"
        android:src="@drawable/image_top_test"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:cropToPadding="false"
        android:layout_below="@+id/hlTopBar"
        android:background="#00000000"
        android:scaleType="fitXY" />
---

Top 5 ответ

1Wasim Ahmed @

О деятельности Creat..you можете получить разрешение экрана ... и изменить размер изображения в соответствии с экрана Widht и Height..and установить изображение ..в этом случае ваш коэффициент будет то же самое на каждом типе устройств ..

изменить размер изображения ..: 1. Получить ширину и высоту экрана 2.Resize изображение Соответствует нормам разрешением экрана 3.Set на изображение, чтобы мнение

2Kailas @

Этохорошая попытка, вы пытаетесь углубиться в андроид реализации.

Ans #3:

Сначала обеспечения точного размера, высоты и ширины нехорошая практика в Android. Если вы хотите знать, почему ,причина была бы просто она будет пытаться выжать / развернуть изображение до размера, указанного вами в высоту и ширину Params . Всегда wrap_content являетсяпредпочтительным параметр так, чтобыоперационная система будет автоматически регулировать в зависимости от экрана size.Hence необходимо изменить следующим образом:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ibTest"
    android:src="@drawable/image_top_test"
    android:layout_centerHorizontal="true"
    android:adjustViewBounds="true"
    android:cropToPadding="false"
    android:layout_below="@+id/hlTopBar"
    android:background="#00000000"
    android:scaleType="fitXY" />

Ans #1 :

ПочемуImageButton сделать изображение как большой, как это так, маленькая, когда он мог бы заполнить большую часть экрана, даже сразмером ImageButton быть очень широк ?

Ответ аналогиченвыше . Ваш размер изображения будет намного меньше, чем, чтоAndroid OS рассчитывается в зависимости от вашего указанных размеров, принятие решения устройства во внимание . Используйте http://coh.io/adpi/ сайт, чтобы сделать его простым для вычисления . Всегда берите MDPI в качестве стандарта. Предположим, что ваш размер изображения 988X89 в MDPI, это будет :

Android - изображение Кнопка Масштаб Теперь, это как если бы вы пытаетесь просмотреть изображение 988px X 89px на экране xhdpi, гдеAndroid OS вычисления размера изображения, как 1976px X 178px, которое способ больше, чем ваш заданный размер изображения 988px X 89px, Вот почему вы получите небольшое изображение с большей акватории Белого .

Как это исправить? Пройдите через Android спецификации для поддержки различных экранов плотности. Для этого необходимо разработать изображения специально для hdpi, MDPI, xhdpi и поместить их в соответствующие папки :

 MyProject/
     res/
       drawable-xhdpi/
           awesomeimage.png
       drawable-hdpi/
           awesomeimage.png
       drawable-mdpi/
           awesomeimage.png
       drawable-ldpi/
           awesomeimage.png

Ref: http://developer.android.com/training/multiscreen/screendensities.html для более подробной информации