Umgang mit verschiedenen Bildschirmauflösungen für Hintergrundbilder in Android

8

Meine Android-App (ein textbasiertes Spiel) verwendet Hintergrundbilder, um ein besseres visuelles Ambiente zu bieten. Zum Beispiel, wenn die Aktion im Spiel Sie in eine Taverne führt, dann erhalten Sie ein Hintergrundbild einer Taverne im Spiel. Dies ist eine enorme Verbesserung, grafisch, über den langweiligen schwarzen Hintergrund, den Sie sonst bekommen würden.

Es ist aber auch ein Problem, da Android: Hintergrund immer zu den Abmessungen des Bildschirms erstreckt. Die Folge ist, dass die Hintergrundbilder sehr schlecht aussehen, wenn der Player zwischen Hoch- und Querformat wechselt. Und um die Sache noch schlimmer zu machen, haben viele Geräte sehr unterschiedliche Seitenverhältnisse (z. B. 320 × 480 mdpi, 480 × 800 hdpi und 480 × 852 hdpi) und noch mehr Variationen kommen.

Wie lösen andere dieses Problem? Einzelne Bilder für die Hauptauflösungen / -orientierungen zu haben, ist für mich keine Option, da dies dazu führen würde, dass die APK zu groß wird.

    
Michael A. 03.09.2010, 10:38
quelle

3 Antworten

2

Ich würde vorschlagen, dass Sie die Breite und Höhe Ihrer aktuellen Ansicht erhalten. Im Moment bin ich nicht sicher, welche Funktionen Ihnen diese Werte geben werden, aber ich bin mir sicher, dass es möglich ist. Damit können Sie dann ein Seitenverhältnis berechnen. Ich würde die Bilder etwa 1000x1000 machen und nur einen bestimmten Teil des Bildes zeigen, damit das Seitenverhältnis nicht falsch ist.
Ich habe das gleiche Problem mit der Kamera. Meine Lösung bestand also darin, einen der beiden Werte, Breite oder Höhe, als fest zu wählen und den korrekten anderen Wert entsprechend dem Seitenverhältnis zu berechnen. Ich bin mir nicht sicher, ob es bereits Funktionen gibt, die nur einen Teil des Bildes zeigen, aber ich bin mir sicher, dass du etwas schreiben kannst, um nur einen Teil des Bildes zu kopieren und diesen Teil zu zeigen.

Der Nachteil ist natürlich, dass Sie nur einen Teil des Hintergrunds zeigen. Da das allgemeine Seitenverhältnis der Telefone jedoch irgendwo zwischen 1: 1,3 und 1: 1,8 liegt, wäre das wohl kein allzu großes Problem. Ich für meinen Teil würde den Teil eines Bildes lieber auf die richtige Weise sehen, als auf ein hässliches, gestrecktes Bild zu schauen.

    
Pandoro 03.09.2010, 11:50
quelle
5

Der erste Schritt besteht darin, die Bildschirmhöhe und -breite des Geräts selbst zu ermitteln und dann die Bitmap nach Bedarf zu dehnen / verkleinern oder zu füllen. Diese SO Antwort hat Quelle, die helfen sollte, kopiert unten. Requisiten auf Josef für die ursprüngliche Antwort.

%Vor%

Hier finden Sie eine allgemeine Quelle für die Orientierung.

%Vor%

oder eine andere Quelle von hier (a etwas unordentlich aber sieht richtig aus).

%Vor%     
gary 03.09.2010 12:30
quelle
2

Vielleicht könnten Sie Ihre Hintergrundbilder als NinePatch Bilder, so dass Sie besser kontrollieren können, wie es dehnt?

Andernfalls können Sie verhindern, dass Ihre Bilder gestreckt werden (oder zumindest das korrekte Seitenverhältnis beibehalten), indem Sie scaleType Attribut z android:scaleType="center" .

    
antonyt 03.09.2010 12:30
quelle