Displaygröße ermitteln und bildschirm anpassen

Hallo Leute ich mache momentan eine App nur für Tablets. Leider ist der unterschied zwischen 7 und 10 Zoll sehr groß. Ich möchte es jetzt so machen, dass ich in der Activity die displaygroöße herausfinde und dann entweder 10 zoll oder 7 zoll layout verwenden(also zwei verschiedene Layouts) jenachdem ob ich 7 oder 10 zoll hab. Ich hoffe mir kann jemand helfen !!
MFG JDProgrammings.
 

kurztipp

Aktives Mitglied
Hallo,

das musst Du nicht zwangsläufig in der Activity machen, siehe Supporting Multiple Screens. Für jede Displaygröße kannst Du einen separaten Layoutordner mit angepassten Layouts erstellen. Android wählt dann das korrekte Layout für Dich.

Ansosnten hilft dir android.view.Display

Java:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

Gruß
 

dzim

Top Contributor
Ich hab da vor einiger Zeit eine Lösung auf StackOverlow gefunden, die mir für meine Zwecke gute Dienste geleistet hat:

Java:
// in deiner Activity ausführen, sonst noch getActivity() vor getResources()
DisplayMetrics metrics = getResources().getDisplayMetrics(); 

double ySize = metrics.heightPixels / metrics.ydpi;
double xSize = metrics.widthPixels / metrics.xdpi;

// Bildschirmgrösse in Zoll
double screenSize = Math.sqrt(xSize * xSize + ySize * ySize);

Die Zahlen haben immer noch ein paar Nachkommastellen, aber das kann man IMHO verkraften. Ich verwende es, um initial in unserer App das korrekte Layout festzulegen - ich habe zwei grundsätzlich verschiedene für Phone und Tablet, wobei ich aber die Möglichkeit gebe, dies in den Einstellungen zu ändern - macht meiner Meinung nach Sinn für Phablets und kleinere Tablets (7"). So kann jeder für sich entscheiden, was ihm gefällt.
Aber wie @kurztipp schon sagte, ist es sinnvoll sich seinen Link mal anzuschauen und vielleicht von vorn herein die Layouts so zu planen, dass die meisten Geräte unterstützt werden. Und nach Möglichkeit viele Fragmente verwenden.

Grüsse,
Daniel
 

Neue Themen


Oben