2017-12-18 3 views
0

Ich entwickle eine Anwendung im Android Studio, die korrekt auf 1080x1920 Handys (und niedriger) angezeigt wird, aber für Handys wie meins (s8) die App wird vermasselt und ich kann nicht finde einen Weg, um die App für jede Bildschirmgröße zu reparieren. Also, ich frage mich, ob es eine Möglichkeit gibt, die Bildschirmgröße der App zu 1080x1920 (mit sagen wir mal schwarze Balken oben & unten auf dem Bildschirm) einzuschränken, auch wenn die Abmessungen eines Handys größer sind (das wird automatisch in Spielen gemacht, die sind nicht kompatibel mit s8). Wissen Sie, wie Sie diesen Effekt erzielen können?Einschränken der Bildschirmgröße einer App basierend auf der Auflösung eines Telefons

+1

Nein, Sie sollten lesen, wie Sie Ihr Layout unabhängig von Ihrer Bildschirmgröße gleich machen. https://developer.android.com/training/multiscreen/index.html – tyczj

+0

Verwenden Sie keine Pixel, verwenden Sie ** dp ** s (und ** sp ** s für Text). –

+0

@tyczj danke, das hat mir sehr geholfen. Sollte ich diesen Thread löschen, da die Antwort in den Kommentaren liegt, oder können Sie ihn als Antwort posten, damit ich ihn darstellen kann? –

Antwort

0

Es ist möglich, dass Sie Ihre Elternansicht auf die exakte Größe mit dem gewünschten Seitenverhältnis einstellen können (1080x1920 wird auf 9x16 skaliert). Dazu müßten Sie die Ansicht programmatisch nennen (oder es in Code erstellen) und Breite und Höhe festgelegt in Pixel mit LayoutParams:

yourView.setLayoutParams(new LayoutParams(width, height)); 

für das Gewicht und Höhe Sie die aktuellen Bildschirmabmessungen wünschen würden, die Sie können von den Windowmanagern erhalten:

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
Display display = windowManager.getDefaultDisplay(); 
Point point = new Point(); 
display.getSize(point); 
int x = point.x; 
int y = point.y; 

Hier finden Sie den x und y, erhalten, die Ihre aktuelle Bildschirmgröße hält (in Pixeln). Dann entscheiden Sie, welche verkleinert werden soll (um das Seitenverhältnis von 9x16 beizubehalten) und legen Sie die LayoutParams Ihrer Elternansicht wie oben erwähnt fest.

Schließlich Ihr Set Ihre Inhalte ansehen als Ihre Eltern Ausblick:

setContentView(yourView); 

, was darüber ist. Ich hoffe, das hilft.

EDIT: Da Sie Spiele erwähnt haben, kann ich Ihnen sagen, dass dort (wenn Sie Android SDK verwenden) Sie Ihre SurfaceView als übergeordnete Ansicht haben, ist das Verfahren gleich.

Verwandte Themen