Android: come smettere di Android 1.6 + da immagini di scaling
Domanda
ho aggiornato il mio build per creare contro Android 1.6, e ora i miei bitmap vengono ridimensionato su schermi ad alta densità. Io non voglio che questo comportamento. Ho dato a questo un colpo:
http://blog.tomgibara.com/post/190539066/android- unscaled-bitmap
, ma le immagini sono ancora scalando, cioè a meno che li ho impostato ad un'altezza e larghezza specifica. Se uso wrap_content
che vengono scalati verso il basso.
Ho un caricatore di immagini utilizzando la bitmap loader non in scala per creare un drawable in questo modo:
Bitmap bm = UnscaledBitmapLoader.loadFromResource(imageBufferInputStream);
drawable = new BitmapDrawable(bm);
che più tardi assegno a un ImageView in questo modo:
imageView.setImageDrawable( copyBitmapDrawable( (BitmapDrawable) drawable) );
Soluzione 3
Avvolgere la bitmap con un Drawable
è il problema. Il Drawable
scala l'Bitmap
. Invece di utilizzare un Drawable
, assegnare il Bitmap
al ImageView
direttamente utilizzando imageView.setImageBitmap(Bitmap)
.
Altri suggerimenti
Al fine di avere un'immagine non in scala quando viene caricato da una risorsa (ad esempio con BitmapFactory.decodeResource) è necessario individuare in res / drawable-nodpi invece del solito drawable, drawable-ldpi e così via.
con
new BitmapDrawable(this.getResources(), bmp);
anziché
new BitmapDrawable(bmp);
dovrebbe risolvere il problema.
ImageView.ScaleType . Le preforme CENTER
costanti alcun ridimensionamento, quindi credo che questo è quello che stai cercando.
Tra l'altro, si usa pixel o avvallamenti come unità di misura? Utilizzando avvallamenti (indipendenti dalla densità-pixel) è un mezzo di standardizzazione display risoluzioni multiple. Troverete un paio di suggerimenti qui .