Auflösungsproblem

  • Antworten:4
Dominic Bartl
  • Forum-Beiträge: 180

03.05.2010, 00:44:16 via Website

Ich denke dieses Problem ist eines der schwierigsten Probleme bei der Entwicklung von Android Apps.
Wie bekomme ich es hin das ich mein Spiel (Canvas) auf allen Handys zum laufen bekomme?
Also das es sich automatisch der Auflösung anpasst?

Ich denke einfach das Spiel auf eine Bitmap zeichnen und die dann skalieren ist sehr sehr performancelastig!

Freu mich auf Antworten....



http://twitter.com/DevBartinger

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

03.05.2010, 08:03:04 via Website

Moin,

Theoretisch macht Android das automatisch :
For instance, suppose a given device is using a WVGA high-denisty screen, which is 480x800 and about the same size as a traditional HVGA screen, but it's running an app that states that it does not support multiple densities. In this case, the system will "lie" to the application when it queries for screen dimensions, and report 320x533. Then, when the app does drawing operations, such as invalidating the rectangle from (10,10) to (100, 100), the system will likewise automatically transform the coordinates by scaling them the appropriate amount, and actually invalidate the region (15,15) to (150, 150). The same thing happens in the other direction, if the application is running on a lower-density screen, coordinates are scaled down.


Nachzulesen hier: http://developer.android.com/guide/practices/screens_support.html

lg Voss

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

03.05.2010, 12:45:11 via Website

Mittels OpenGL wirst du noch weniger sorgen haben!

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Tobias E.
  • Forum-Beiträge: 180

03.05.2010, 15:05:06 via Website

Ich würde da genau anders herum rangehen. Alle Source Grafiken erst skalieren und dann zeichnen. Angenommen Du hast eine Sprite-Grafik die genau 10% Bildschirmgröße haben soll. Dann kannst Du die Gesamt-Bildschirmgröße ermitteln, die Grafik dann entsprechend skalieren, so daß sie genau 10% der Bildschirmgröße hat, und nachher ohne weitere Skalierung zeichnen.

Skalieren während der Laufzeit ist sehr rechenzeitintensiv und wird Dein Spiel garantiert zum ruckeln bringen.

Du must Dich dabei von der Vorstellung verabschieden Dein Spiel-Layout in Pixeln zu definieren, sondern dazu übergehen alles in % der Bildschirmgröße festzulegen.

Wenn Du mit den regulären UI Komponenten arbeitest (Buttons etc.) gibt's auch die Möglichkeit die Größe in "device independent pixel" anzugeben. Damit ist dann sichergestellt, daß die Grafik auf jedem Handy in etwa gleich groß dargestellt wird.

Gegenüber der Methode die Skalierung dem Android System zu überlassen, hast Du auf diese Art den Vorteil daß Du bei Telefonen mit höherer Auflösung eine schickere Grafik hinkriegst.

Antworten