23

Ich habe 4 verschiedene Größen für jedes der Symbole, die ich in meiner App verwenden muss. Das Problem ist My Nexus 7 (1280 x 800) und Galaxy S2 (800 x 480) scheinen die Ressourcen in Drawable-HDpi zu verwenden. Wie erzwinge ich, dass der Nexus Ressourcen in drawable-xhdpi verwendet und dann die 10-Zoll-Registerkarte, um drawable-xxhdpi zu verwenden.Festlegen des aufklappbaren Ordners für verschiedene Auflösungen

Ich habe dies in meinem Manifest-Datei

<supports-screens android:resizeable="true" 
       android:smallScreens="true" 
       android:normalScreens="true" 
       android:largeScreens="true" 
       android:xlargeScreens="true" 
       android:anyDensity="true" /> 
+2

als andere zu setzen sind, unter Hinweis darauf, das Problem ist nicht, wie Android zu zwingen, wie Sie es wollen laufen, aber für Sie zu verstehen, wie Ressourcen Auswahl funktioniert bei Android und verwenden Sie es richtig. Ich empfehle Ihnen dringend, das offizielle Dokument zu lesen. – Teovald

+0

Meine App verwendete nicht die richtige Dichte (sie verwendete mdpi, wo hdpi verfügbar war). Ihr Code-Snippet hat mir geholfen, mein Problem zu beheben, und könnte anderen helfen. Daher habe ich Ihre Frage im Namen der Erhaltung neu gesetzt. – 1owk3y

+0

Ich denke, Autoren sollten ihre Antworten für die neuesten Geräte und neue Android Apis aktualisieren. –

Antwort

99

Wie erzwinge ich die Nexus-Ressourcen in ziehbar-xhdpi zu verwenden und dann das 10-Zoll-Tab ziehbar-xxhdpi zu benutzen?

Sie können nicht.

Die Qualifier hdpi,xhdpi,xxhdpi beschreibt die Bildschirmdichte des Geräts, nicht die Größe des Bildschirms. Vom official doc

Rasterdichte

Die Menge von Pixeln innerhalb eines physikalischen Bereich des Bildschirms; normalerweise bezeichnet als dpi (Punkte pro Zoll). Zum Beispiel hat ein "niedriger" Dichte-Bildschirm weniger Pixel innerhalb eines gegebenen physikalischen Bereichs, verglichen mit einem "normalen" oder "hohen" Dichte-Bildschirm. Zur Vereinfachung gruppiert Android alle tatsächlichen Bildschirmdichten in vier generalisierte Dichten: niedrig, mittel, hoch und extra hoch.

Wenn Sie auch Tablets unterstützen möchten, verwenden Sie large, xlarge Qualifier. Nexus 7 ist ein large-hdpi Tablet (technisch ist es tvdpi, aber nimmt Bilder von hdpi). Wenn Sie Bilder für Nexus 7 erstellen möchten, erstellen Sie einen Ordner mit dem Namen drawable-large-hdpi und legen Sie die Bilder dort ab.

Hinweis: Dies ist der Sonderfall für Nexus 7. Denn obwohl Nexus 7 ein 7-Zoll-Tablet ist, es Auflösung von 1280 * 800 hat. Es ist also ein hdpi Gerät. Aber normale 7-Zoll-Geräte haben niedrigere Auflösungen von 1024 * 600. So sind sie mdpi Geräte. So kann sich der Zeichenqualifikator ändern. (Aus meiner eigenen Erfahrung, legen Sie zuerst einen Ordner drawable-large-mdpi für 7-Zoll-Geräte und überprüfen Sie es auf Nexus 7. Wenn es kein Problem mit Bildern gibt, müssen Sie nicht einen anderen Ordner legen.Denn wenn ein bestimmter Ordner nicht vorhanden ist, Android für die nächstmögliche Ordner überprüfen wird und optimieren es für das Gerät Bildschirm)

Jetzt in Bezug auf die 10-Zoll-Tabletten Fall sind sie xlarge Geräte und deren Dichten können mdpi-xhdpi ändern (Nexus 10) Aber viele haben eine Auflösung von 1280 * 800 und sie sind mdpi Geräte.

Je besser die Praxis ist folgenden Drawables

// for Phones 
drawable-ldpi 
drawable-mdpi 
drawable-hdpi 

//for 7 inch tablets 
drawable-large-mdpi 
drawable-large-hdpi(for Nexus 7) 

// for 10 inch tablets 
drawable-xlarge-mdpi 
+0

Sehr gute Erklärung, AndroidVogue hat die richtige Antwort zuerst, aber ich denke, kann helfen, besser für mich und andere, die ähnliche Probleme zu erklären. Große Anstrengung – Amanni

+0

1 up-vote für Ihre Erklärung. –

+0

+1 für die Rettung meines Tages, besser erklärt als die Website des Google-Entwicklers..Groß !! –

1
The problem is My Nexus 7 (1280 x 800) and galaxy s2 (800 x 480) seem to use the resources in drawable-hdpi 

, die wie nexus 7 auf Gerät hängt hat 240dpi welches ein hdpi Gerät es ziehbar Ressourcen von hdpi wie dies dauern wird, wenn Sie den gleichen Test in samsungtab 2 es wird die gleiche ziehbare von mdpi nehmen, weil es ein mdpi Gerät ist

+0

grundsätzlich möchte ich 480x320 für mdpi, 800x480 für hdpi und 1280x800 für xhdpi – Amanni

+0

Nein nehmen sie von hdpi nicht mdpi – Amanni

+0

Ich habe meine Antwort bearbeitet bitte überprüfen Sie es. –

1

Versuchen Sie, Configuration qualifiers für Ihre verwenden Ressourcen. Dies ist die beste Vorgehensweise. Wie res/drawable-normal-hdpi-port/icon.png.

Ref-Link: Configuration qualifiers

Dank.

+0

so kann ich mdpi, hdpi und xhdpi für normal und dann 3 mehr für große und x-große? – Amanni

+0

@Amanni Nicht notwendig. Erstellen Sie einen Ordner nach Ihren Bedürfnissen. Ich meine, auf welche Art von Geräten Sie zielen. Für Nexus 7 können Sie den Ordner "res/drawable-large-hdpi" erstellen. Es würde Bilder aus diesem Ordner verwenden. Jetzt haben Sie zwei 'Hdpi'' Drawable'-Ordner - einen für '480x800 -> Drawable-hdpi' und den neu erstellten für' Nexus7 -> Drawable-Large-hdpi'-Tablets. –

Verwandte Themen