2012-04-09 12 views
5

Die App, die ich entwickle, enthält zwei separate Layouts: eines für die normalen Telefone, das andere für kleine Tablets wie NOOKcolor. Die Entscheidung, welche getroffen wird, basiert auf der Bildschirmbreitenauflösung (derzeit 600dip). Es sieht gut aus auf Nook, aber schrecklich auf HTC Rezound, das ein 720 x 1280 Display hat. Unabhängig von der höheren Auflösung sieht alles (Text, Bilder usw.) viel größer aus, so dass alles zusammengewachsen ist.Android - kleine Tablette gegen großes Telefon erkennen?

Was wäre ein guter Ansatz, um das richtige Gerät auszuwählen? Vielleicht physikalische Größe (4,3 "vs 7") vs Auflösung erkennen?

+0

Es gibt eine Configuration.screenLayout bitmask - siehe hier http://stackoverflow.com/questions/5015094/ermitteln-device-screen-category-klein-normal-groß-xlarge-using-code – dag

Antwort

4

Verwenden Sie die folgende Methode des Geräts Bildschirmgröße zu erkennen:

/** 
    * Checks if the screen size is equal or above given length 
    * @param activity activity screen 
    * @param screen_size diagonal size of screen, for example 7.0 inches 
    * @return True if its equal or above, else false 
    */ 
    public static boolean checkScreenSize(Activity activity, double screen_size) 
    { 
     Display display = activity.getWindowManager().getDefaultDisplay(); 
     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     display.getMetrics(displayMetrics); 

     int width = displayMetrics.widthPixels/displayMetrics.densityDpi; 
     int height = displayMetrics.heightPixels/displayMetrics.densityDpi; 

     double screenDiagonal = Math.sqrt(width * width + height * height); 
     return (screenDiagonal >= screen_size); 
    } 
+0

Aha! Dichte ist hier der Schlüssel! Danke, das scheint zu funktionieren – Bostone

+0

Was ?? Ich habe 7.0 als Eingabeparameter eingegeben, und es gibt für mein Kindle Fire den Wert false zurück. –

+0

seltsam, weil ich es auf meinem Gerät getestet und es funktioniert einwandfrei. Versuchen Sie, 'screenDiagonal' vor * return * zu protokollieren und zu sehen, was es tatsächlich für Ihr Gerät berechnet – waqaslam

1

Überprüfen Sie die Dokumentation für Supporting Multiple Screens. Sie können einer vorgegebenen Ordnerbenennungsstruktur folgen, sodass Android verschiedene Layouts und Zeichen für unterschiedliche Bildschirmgrößen/-dichten lädt.

Zum Beispiel:

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
+0

Für Pre-Waben ist dies etwas nutzlos – Bostone