2010-09-24 4 views
1

J'ai un problème avec l'affichage de l'image bitmap sur l'imageview sur l'écran haute densité (480x800). Lorsque l'image bitmap est chargée à partir du fichier sur la carte SD, l'image ne s'adapte pas à l'écran hdpi. Sur un écran de densité moyenne, cela fonctionne normalement (320x480).L'image bitmap à partir du fichier n'est pas mise à l'échelle sur un périphérique à haute densité

public static Bitmap getBitmapFromFile(String src) { 
    File file = new File(src); 

    if (file.exists()) { 
     return BitmapFactory.decodeFile(src); 
    } 

    return null; 
} 

mImage.setImageBitmap(Util.getBitmapFromFile(filePath)); 

screenshoot sur hdpi & mdpi http://202.148.2.34/~lorenz/iview.jpg

Répondre

1

Essayez d'ajouter un type d'échelle à elle

mImage.setScaleType(ScaleType.FIT_XY); 

Il y a beaucoup de type mise à l'échelle disponible. Vérifiez celui qui vous convient.

+0

Salut Rahul..thanx beaucoup, ça marche parfaitement .. :-) –

0

Ceci est une vieille question mais je pense qu'il y a un moyen plus facile de le faire. Il semble que lorsque vous chargez un bitmap à partir d'une source externe (un fichier qui n'est pas dans votre dossier /res), le framework Android le traitera comme s'il était destiné au périphérique de base (par exemple, mdpi). Par conséquent, il semble très bien sur un écran 320x480 mdpi, mais pas autant sur un écran hdpi. Maintenant, le système devrait normalement avoir une échelle de 1,5 sur un écran hdpi (à moins que vous supposiez que vous avez défini une densité dans l'objet bitmap, mais je ne sais pas vraiment comment cela fonctionne) mais puisque vous avez utilisé le la méthode setImageBitmap() la bitmap n'est pas mise à l'échelle, ce qui conduit à votre problème. Supposé que si vous utilisez la méthode setImageDrawable() et que vous enveloppez le bitmap dans un Drawable, le bitmap sera automatiquement mis à l'échelle comme vous le souhaitez.

Je n'ai pas essayé cela, mais apparemment this guy avait le problème inverse de vous.

Questions connexes