Android - Imagem Scale Botão

? mFeinstein @ | Original: StackOverFlow
---

Hi,

Estou tentando encaixar uma imagem dentro de um ImageButton para o teste, mas a forma como o ImageButton comporta-se não é o esperado .

Inicialmente, eu fiz um 988x89 pixels PNG e colocou-o dentro de um ImageButton, que está em uma tela de 1024x600 pixels emulado 7inches . O ImageButton é 988dp x 89dp, eu sei dp não é o mesmo que pixels, mas a favor desta resolução que eu esperava a imagem para dimensionar -se razoavelmente a ocupar a maior parte do ImageButton . Também mudei para px vez de dp para testes e não fazia diferença .

Mas, em vez de ImageButton fez a imagem no seu interior muito pequeno ( as linhas azuis são as ImageButton limites e a linha verde é uma indicação align centro) .

Android - Imagem Scale Botão

por isso a pergunta # 1: Por que o ImageButton fazer uma imagem tão grande como este tão pequeno, quando poderia preencher a maior parte da tela, mesmo com o tamanho ImageButton ser muito grande ?

Portanto, para superar isso, eu selecionei adjustViewBounds, que não fez nenhuma diferença, em tudo, o que traz a pergunta # 2: Por quê? Não está a ajustar vista limites supostos para ajustar a vista limites ?

O código até agora é :

<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" />

Então, mais tarde eu mudei scaleType para fitCenter e tornou-se a imagem :

Android - Imagem Scale Botão

O que é estranho para mim, bem como, uma vez que o ImageButton tem a mesma proporção que a imagem, assim que eu esperaria que se encaixam 100%, mas não é apropriado (há uma lacuna na largura em ambos os lados da imagem ) .

Então, mais tarde eu mudei scaleType para fitXY, e eu tenho o meu resultado final:

Android - Imagem Scale Botão

Que parece ser a imagem esperada afinal (comparando a imagem fitXY para a imagem de fitCenter em Photoshop mostra que o fitCenter imagem é ligeiramente oval, mas não pode ser mostrado aqui, o que é esperado uma vez a largura não está combinando a imagem como a altura faz).

Então, minha pergunta é geral (# 3) : O que é o caminho certo para a montagem de uma imagem de Android, e esperar que ele tenha seu tamanho regular no ecrã, e porque é a escala tão bagunçado e eu estou fazendo errado ?

Eu sei que existem tamanhos de tela de questões e dp e etc., mas a escala não está se comportando de uma forma controlada, fitCenter faz com que a imagem oval, e fitXY é muito dependente de me definir o formato da imagem à direita na XY, então eu me pergunto se eu estou fazendo algo de errado e como ele deveria ser o caminho certo .

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 Responder

1Wasim Ahmed @

Na atividade Creat..you pode obter a resolução da tela ... e redimensionar a imagem de acordo com a tela Largura e Height..and definir a imagem ..na desta forma sua relação será a mesma em todos os tipos de dispositivos ..

para redimensionar imagens ..: 1. Obter largura e altura da tela Imagem 2.resize monitores segundo a resolução da tela Imagem 3.Set à vista

2Kailas @

Essa é uma boa tentativa, você está tentando ir mais fundo nas implementações android .

Ans #3:

Na primeira prestação de tamanho exato como altura e largura não é uma boa prática no android . Se você deseja saber porquê, a razão seria simplesmente ele vai tentar espremer / expandir a imagem para o tamanho especificado por você na altura e na largura params . Sempre wrap_content é o parâmetro preferido para que o sistema operacional irá ajustar automaticamente dependendo da size.Hence tela, é necessário modificar como:

<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 :

Por que o ImageButton fazer uma imagem tão grande como este tão pequeno, quando poderia preencher a maior parte da tela, mesmo com o tamanho ImageButton sendo muito grande ?

A resposta é semelhante à acima mencionada . O tamanho da imagem será muito menor do que o sistema operacional Android calculada de acordo com o seu tamanho mencionado, tendo resolução dispositivo em consideração. Use o site http://coh.io/adpi/ para torná-lo simples para calcular . Sempre leve o MDPI como padrão. O suponha que o seu tamanho da imagem é 988X89 em MDPI, será :

Android - Imagem Scale Botão Agora, é como se você está tentando exibir uma imagem de 988px X 89px em uma tela xhdpi onde o sistema operacional Android calculado o tamanho da imagem como 1976px X 178px, que é muito maior do que o dado tamanho de imagem de 988px X 89px . é por isso que você começa pequena imagem com mais branco área.

Como corrigir isso? Atravesse as especificações Android para suportar telas diferentes densidades. isso requer que você para projetar imagens especificamente para HDPI, MDPI, xhdpi e colocá-los em pastas adequadas de:

 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 para obter mais detalhes