Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

31.10.2018, 11:37

MonoGame Android Wie kann ich den kompletten Bildschirmbereich ausfüllen?

Bei iOS habe ich das Problem mit den schwarzen Balken oder nicht komplett ausgefülltem Bildschirm mit LaunchImage gelöst. Wenn ich für jede Auflösung ein LaunchImage benutze dann sieht das Bild auf dem iPhone/iPad immer gleich aus.
LaunchImage in iOS
Als Referenz habe ich die iPhone Auflösung 1334x750 Pixel genommen. Mein Hintergrundbild hat die gleichen Maßen. Das Hintergrundbild soll auf jedem iOS/Android Smartphone und Tablet den Bildschirm komplett ausfüllen und das Hintergrundbild muss immer komplett angezeigt werden, es darf nicht an den Seiten abgeschnitten werden. Außerdem unterstützt meine App nur DisplayOrientation.LandscapeLeft und DisplayOrientation.LandscapeRight, Portrait wird nicht unterstützt.
Beispiel: Auf dem iPhone 7 iOS 12.0 Emulator funktioniert es.
iPhone 7 Emulator
Bei Android habe ich in der Klasse Activity1 bereits angegeben dass nur der Landscape Modus unterstützt wird:

Zitat

ScreenOrientation = ScreenOrientation.UserLandscape
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize)]

Trotzdem funktioniert es bei Android nicht, da ist oben und unten ein nicht ausgefüllter Bereich:
Android Emulator
Wie kann ich das Problem bei Android lösen? Gibt es da auch so etwas wie LaunchImage mit dem ich das Problem lösen kann oder wie macht man das bei Android?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

31.10.2018, 12:33

Du kannst bei Android niemals ein "Es darf keine Balken geben und es muss komplett angezeigt werden" erreichen, weil Android etwa 3 Millionen verschiedene Geräte-Größen und Auflösungen hat. Verabschiede dich von der Idee und denke über eine Alternative nach.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Goldwing Studios

Treue Seele

Beiträge: 359

Wohnort: Heidelberg

Beruf: Softwareentwickler, Vertriebler

  • Private Nachricht senden

3

31.10.2018, 12:56

(Achtung: rein theoretische Antwort nicht fundiert oder getestet)

Mach es doch so, dass du dich an dem kleinsten Format orientierst und das Logo/XYZ in der Mitte platzierst und den Hintergrund des Layouts an den Hintergrund des Logos anpasst.

So kannst du dir immer sicher sein, dass es nicht zu groß wird und hast nicht so viel rumgefummel mit den verschiedenen Formaten.


Eventuell könntest du auch prüfen ob das Element innerhalb des Viewports ist und falls nein dann runterskalieren.

4

31.10.2018, 15:29

Ich verstehe nicht warum ich im Android Emulator immer oben und unten einen Bereich habe der nicht von meiner Hintergrundgrafik abgedeckt wird ?( Weiss jemand warum das so ist?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

31.10.2018, 16:01

Weil deine Grafik nicht dasselbe Seitenverhältnis hat wie der Emulator-Bildschirm? Eine der folgenden Lösungen wirst du implementieren/hinnehmen müssen:
- Grafik skalieren und Seitenverhältnisse vernichten
- Farbige Balken einblenden
- Grafik abschneiden
Andere Lösungen sind mathematisch nicht möglich in der Android-Welt der tausend Screensizes.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Goldwing Studios

Treue Seele

Beiträge: 359

Wohnort: Heidelberg

Beruf: Softwareentwickler, Vertriebler

  • Private Nachricht senden

7

31.10.2018, 17:25

Hast du meine Antwort gesehen?

Hab ich, jedoch muss das alles ja auch mit ständig wechselnden Hintergründen in einem Spiel funktionieren und nicht nur beim Start der App wenn das Logo eingeblendet wird und ich weiss nicht wie ich deinen Vorschlag in einem richtigen Spiel umsetzen soll.

Goldwing Studios

Treue Seele

Beiträge: 359

Wohnort: Heidelberg

Beruf: Softwareentwickler, Vertriebler

  • Private Nachricht senden

8

31.10.2018, 17:40

Du hast doch dann bestimmt ein Event über welches du das steuern kannst

9

01.11.2018, 10:43

Weil deine Grafik nicht dasselbe Seitenverhältnis hat wie der Emulator-Bildschirm? Eine der folgenden Lösungen wirst du implementieren/hinnehmen müssen:
- Farbige Balken einblenden
Andere Lösungen sind mathematisch nicht möglich in der Android-Welt der tausend Screensizes.


Wäre es möglich immer schwarze Balken(letterboxed) über den freien Bereich zu zeichnen? So würde das Bild ja bei jeder Auflösung und Gerät gleich aussehen und man würde so nicht auf einigen (Android)-Geräten mehr vom Bild/Spielbereich sehen.
Falls ja, wie könnte man rausfinden wo und wie groß die Balken gezeichnet werden müssen?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

01.11.2018, 12:29

Klar geht das. Du bestimmst die Skalierungsfaktoren, die benötigt werden, damit dein Bild entweder dieselbe Höhe oder dieselbe Breite bekommt wie der Bildschirm. Von den beiden nimmst du das Minimum und skalierst das Bild damit. Dann ergibt sich aus der neuen Bildhöhe und der Screenhöhe eine Differenz (die eventuell 0 ist), genau wie aus der neuen Bildbreite und der Screenbreite. Diese Differenzen teilst du jeweils durch 2 und kennst damit die Dicke der Balken, die du oben/unten oder links/rechts zeichnen musst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige