Android: Comment arrêter Android 1.6+ à partir d'images d'échelle
Question
Je mis à jour ma version à construire contre Android 1.6, et maintenant mes bitmaps sont revus à la baisse sur les écrans de haute densité. Je ne veux pas ce comportement. J'ai donné un coup de feu ce:
http://blog.tomgibara.com/post/190539066/android- bitmaps unscaled-
mais les images sont mise à l'échelle STILL, qui est à moins que je les ai placés à une hauteur et une largeur spécifique. Si j'utilise wrap_content
ils sont revus à la baisse.
I ai un chargeur d'image en utilisant le chargeur de bitmap unscaled pour créer une zone de dessin comme ceci:
Bitmap bm = UnscaledBitmapLoader.loadFromResource(imageBufferInputStream);
drawable = new BitmapDrawable(bm);
que je cède plus tard à un ImageView comme ceci:
imageView.setImageDrawable( copyBitmapDrawable( (BitmapDrawable) drawable) );
La solution 3
Emballage bitmap avec un Drawable
est le problème. Le Drawable
redimensionne l'Bitmap
. Au lieu d'utiliser un Drawable
, affecter le Bitmap
au ImageView
en utilisant directement imageView.setImageBitmap(Bitmap)
.
Autres conseils
Afin d'avoir une image non redimensionnée au moment du chargement d'une ressource (par exemple avec BitmapFactory.decodeResource) vous devez localiser dans res / drawable-nodpi au lieu de l'habituelle drawable, drawable-LDPI et ainsi de suite.
Utilisation
new BitmapDrawable(this.getResources(), bmp);
au lieu de
new BitmapDrawable(bmp);
devrait résoudre le problème.
Utilisez ImageView.ScaleType . Les préformes constantes de CENTER
pas mise à l'échelle, donc je suppose que ce que vous recherchez.
Par ailleurs, pensez-vous utiliser des pixels ou des creux comme des unités de taille? Utilisation des creux (densité indépendant-pixels) est un moyen d'affichage sur la normalisation des résolutions multiples. Vous trouverez quelques conseils ici .