1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Supporting Multiple Screens

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von programm2008, 05.06.2012.

  1. programm2008, 05.06.2012 #1
    programm2008

    programm2008 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2010
    [​IMG]

    Hallo Leute habe auf der developer seite von Android diese Tabelle gefunden. Ich möchte meine App weiter optimieren, da sie auf älteren Geräten abstürzt. Es gibt ja verschiedene drawable ordner. Wenn ich z.B ein kleines Bild in den mdpi ordner packe funktioniert es zwar super auf kleinen Geräten aber auf WXGA Geräten ist die größe dann kleiner als es sein soll?!? WTF? Kann mir einer erklären wie ich das Problem löse? mdpi reicht ja von (320x480) bis (1280x800)...
     
  2. BFK, 05.06.2012 #2
    BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Hi,
    Einfach viele vers Bilder auf in vers. Grössen in vers. Ordner unterbringen.

    Und mdpi reicht eigentlich nicht von (320x480) bis (1280x800). Das sehe ich zum ersten Mal. Normalerweise ist das Bildschirmformat WVGA800 hdpi.
    Kann sein das ich falsch liege, aber wenn es so wirklich wäre dann wäre das wirklich schlecht. Muss aber noch dazu sagen, dass ich kein Gerät kenne, dass eine Hohe Auflösung hat aber geringe Bildschirmdichte.

    Auf jeden Fall wenn du einen Emu vom Android SDK mit der Auflösung 480x800 startest wird es ja automatisch auf hdpi angelegt.

    Mich würde mal interssieren auf welchem Gerät stürzt deine App ab..?
    Und wieso stürzt sie überhaupt ab, eigentlich sollten deine Bilder da schlecht aussehen oder nicht..?
     
    programm2008 bedankt sich.
  3. programm2008, 05.06.2012 #3
    programm2008

    programm2008 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2010
    Ich habe das bisher so gehandhabt dass ich die bilder mit der Auflösung: 550x325 (activity besteht aus landscape modus mit viewflipper) in den default drawable ordner gepackt habe. Auf meinem Handy Galaxy S2 und auch auf "moderneren" Handy läuft alles ganz sauber. Bei Handys mit schlechter Hardware z.B ZTE-Blade stürzt die Activity ab und gibt mir einen "OutOfMemoryError". Hab mich schon erkundigt und soll daran liegen, dass die Bilder zu groß sind für das Handy...
     
  4. BFK, 05.06.2012 #4
    BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Ach so, also weiss du garnicht wie deine Activity bei diesen GEräten ausieht..?

    Mal ne Frage lädst du deine Bilder per Bitmap-Objekt..?

    Denn dein "OutOfMemoryError" errinert mich sehr an das bekannte Problem von Android mit grossen Bitmap-Files, siehe hier..: Loading Large Bitmaps Efficiently | Android Developers
    Da gibt es auch Lösungsvorschläge von Google.
     
  5. programm2008, 05.06.2012 #5
    programm2008

    programm2008 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2010
    Wie meinst du das mit aussehen?

    Ähhmm die Bilder sind in der XML Datei definiert, da es sich um einen Viewflipper handelt..Was könnte ich denn da machen..muss ich die Auflösung minimieren und dann z.b mit den niedrigeren Auflösungen in z.B in den ldpi ordner reinpacken oder noch iwas am code ändern?

     
  6. BFK, 06.06.2012 #6
    BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Ich meine, da deine app davor abstürzt, weiss du ja nicht wie deine Activity bei diesen genannnte geräten aussieht.

    Ja du könntest niedrigere Auflöung und im ldpi Ordner reintun, wenn du es noch nicht probiert hast.
    Ich frage mich grad ob deine App bei ldpi handys und kleinem bildschirm also handys mit 240x320 funktioniert, ich meine die Bilder wären doch viel zu gross oder nicht (wenn du ja keine neue kleinere anlegst)..?
     
  7. programm2008, 06.06.2012 #7
    programm2008

    programm2008 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2010
    Aso ja kann ich leider nicht sehen.

    Hab schon probiert allerdings mit einem Android Emulator. Allerdings ist beim Emulator das Problem, dass es sogar mit den Einstellungen 240x320 funktioniert ich muss die VM größe noch anpassen.
     
  8. Astrachan, 06.06.2012 #8
    Astrachan

    Astrachan Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    2
    Registriert seit:
    31.05.2012
    Ich kenne den ViewFlipper zwar nicht, aber ich hatte auch mal Probleme mit dem OutOfMemoryError als ich das Gerät gekippt habe. Beim Kippen muss das Gerät ja alle Daten speichern (in den ram, vermute ich mal) und in der anderen Orientierung wieder herstellen. Wenn der ram aber voll läuft, durch große Grafiken zum Beispiel, stürzt das Gerät ab. Vielleicht ist das mit ViewFlipper ja so ähnlich. Zumindest kannst du ja beim Emulator den ram hochdrehen.

    Was für ein Ergebnis hast du erwartet? Mal angenommen, zwei unterschiedlich große Geräte haben 160dpi (mdpi) , dann wird eine Grafik in den physikalischen Abmessungen auf beiden Geräten exakt gleich aussehen (also in cm zum Beispiel). Nur hat das große Gerät eben mehr Pixel zur Verfügung.
    Ich denke mal, du willst, dass dein Bild im Verhältnis zum Bildschirm immer gleich aussieht, richtig? Dann muss du die Grafik skalieren.

    Soweit ich weiß, sind mit diesen Begriffen nur die Auflösungen gemeint, nicht aber die Pixeldichte (Sieht man auch in der Tabelle, WVGA800 taucht in drei unterschiedlichen Dichten auf).

    Und noch ein Tipp: Du kannst deine drawable-Ordnder auch folgendermaßen kennzeichnen: drawable-large-mdpi usw. Jede Kombination ist möglich. Auch mehrere layout-Ordner sind möglich (layout-large, layout-small usw.) Dann musst dort du jeweils Grafiken verschiedener Größen und andere Layouts zur Verfügung stellen.
     
    Zuletzt bearbeitet: 06.06.2012
    programm2008 bedankt sich.
  9. programm2008, 06.06.2012 #9
    programm2008

    programm2008 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    16.11.2010
    Wie mache ich das mit dem Skalieren?
     
  10. Astrachan, 07.06.2012 #10
    Astrachan

    Astrachan Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    2
    Registriert seit:
    31.05.2012
    Das mit dem Skalieren ist eine recht komplizierte Sache (wie ich finde). Weil du ja ein ImageView verwendest, solltest du dir dessen Attribut "android:scaleType" anschauen. Der Wert "fill" füllt zum Beispiel die ganze ihm zur Verfügung stehende Breite und Höhe aus und skaliert dabei die Grafik. Wenn du das richtig mit Layouts kombinierst (z.B. LinearLayout mit Proportionen), könntest du schon hinbekommen, was du möchtest. Natürlich kannst du auch im Code skalieren, aber das ist wiede eine Sache für sich.
     

Diese Seite empfehlen