Ich möchte Bilder mit DrawBitmap() -Methode zeigen. Aber bevor ich die Größe nach Bildschirmgröße ändern möchte. Ich habe ein Problem mit der Qualität des Ergebnisbildes. Sie können Screenshots und Testcode unten sehen. Wie kann ich Bilder in Runtime in guter Qualität skalieren?Android: Qualität der Bilder in Laufzeit geändert
Vielen Dank für die Lösungen.
Originalbild: alt text http://dl.dropbox.com/u/709109/gradient.png
Ergebnis Screenshot am Gerät: alt text http://dl.dropbox.com/u/709109/device.png
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import java.io.IOException;
import java.io.InputStream;
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.addView(new View(this) {
@Override
protected void onDraw(Canvas canvas) {
Bitmap unscaledBitmap;
try {
InputStream in = getAssets().open("images/gradient.png");
unscaledBitmap = BitmapFactory.decodeStream(in);
in.close();
canvas.drawBitmap(unscaledBitmap, null, new Rect(0, 0, 320, 480), null);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
Vielen Dank, es ist hilfreich Antwort! Aber ich habe keinen Ruf, um es zu wählen. – shinydev
Jetzt verwende ich das "565 Dither Photoshop Plugin", um meine Grafik vorzubereiten. Da das Dithering ein High-Cost-Vorgang ist, funktioniert es nicht mit den Methoden decodeStream und drawBitmap. – shinydev
Android kann 32 Bit gut machen. Stellen Sie nur sicher, dass sowohl Ihre Bitmap als auch Ihr Fenster das ARGB8888-Format verwenden. –