Hallo
Ich habe einen beschrifteten Button als Bild (180x180, 160dpi). Den möchte ich gerne in einer Android App dynamisch auf 68x68 Punkte skalieren. Das klappt auch alles wunderbar, nur bin ich mit dem Ergebnis ganz und gar nicht zufrieden. Die Schrift sieht irgendwie gestört aus, kriselig.
Unter Swing ist das ganze übrigens überhaupt kein Problem. Ich skaliere dort auf SMOOTH und habe wunderbare Ergebnisse.
In Android habe ich das Bild im Order "res/drawable-nodpi" abgelegt, da dort die Bilder nicht automatisch von Android skaliert werden (was mir in diesem Fall keine guten Ergebnisse einbringt)
Mein Code in der App:
// Bild laden
Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.MeinBild);
// Bild skalieren
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float factor = (float) 0.375; // Faktor wird dynamisch errechnet, hier nur als Beispiel
int x = (int) (width * factor);
int y = (int) (height * factor);
Bitmap scaledBitmap = Bitmap.createBitmap(x, y, Config.ARGB_8888);
float ratioX = x / (float) bitmap.getWidth();
float ratioY = y / (float) bitmap.getHeight();
float middleX = x / 2.0f;
float middleY = y / 2.0f;
Matrix scaleMatrix = new Matrix();
scaleMatrix.setScale(ratioX, ratioY, middleX, middleY);
Canvas canvas = new Canvas(scaledBitmap);
canvas.setMatrix(scaleMatrix);
canvas.drawBitmap(bitmap, middleX - bitmap.getWidth() / 2, middleY - bitmap.getHeight() / 2, new Paint(Paint.FILTER_BITMAP_FLAG));
Alles anzeigen
Ich habe schon einige Sachen probiert, aber bislang erfolglos. Den Simulator habe ich auf 800x400 mit 160dpi gestartet.
Weil jemand eventuell weiter? Ich bin mit meinem Latein am Ende...
Gruß Fastjack.