Pergunta

Quero exibir um arquivo JPEG de 480x320 armazenado no cartão SD no Android 2.0.1 com a pele WVGA854 e a densidade 240 LCD (Motorola Droid).

No entanto, quando eu crio um bitmapdrawable através do drawable.createfrompath (), o bitmapdrawable resultante tem os seguintes valores:

mbitmapwidth = 320

MbitMaphEight = 213

MTARGETDENSIDADE = 160

O manifesto inclui a seguinte configuração:

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" />
<supports-screens 
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
 anyDensity="true"
/>

Aparentemente, o Android está redimensionando o bitmap. Qual poderia ser a causa desse comportamento? Como posso evitar isso?

Agradeço antecipadamente.

Foi útil?

Solução

Drawable.createfrompath () é um método de conveniência que usa o BitmapFactory em sua implementação. Parece que, já que o Android de nível 4 da API redimensiona todos os desenhos de bitmap e outros recursos.

Para obter o tamanho original do bitmap, seria necessário lançar o desenhado em um bitmap desenhado e usar bitmapdrawable.gebitmap (). GetWidth () e bitmapdrawable.gebitmap (). GetWidth ().

Uma alternativa pode ser usar o BitmapFactory diretamente e desativar o redimensionamento com o bitmapFactory.options.Inscaled. Esta propriedade está disponível apenas desde o nível 4 da API; portanto, se você deseja direcionar os dispositivos de nível 3 da API, poderá usar a reflexão para verificar sua presença.

Ainda não entendo por que esse redimensionamento é necessário para imagens de cartão SD e como isso beneficia os programadores de alguma forma. Sim, uma área de 320x213 em 160 densidade se torna (aproximadamente) uma área de 480x320 em 240 densidade, mas não faria mais sentido se desenhado.createfrompath () retornasse uma densidade de 480x320 com densidade de 240 para uma aplicação em execução em 240 densidade?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top