Ich habe einige benutzerdefinierte Elemente erstellt, die ich programmgesteuert in der oberen rechten Ecke platzieren möchte ( n
Pixel vom oberen Rand und m
Pixel vom rechten Rand). Daher muss ich die Bildschirmbreite und die Bildschirmhöhe ermitteln und dann die Position festlegen:
int px = screenWidth - m;
int py = screenHeight - n;
Wie erhalte ich screenWidth
y screenHeight
in der Hauptaktivität?
0 Stimmen
Verwenden Sie dp statt px, da dies Ihr Layout bei anderen Geräten verzerren würde.
0 Stimmen
Vergessen Sie nicht, mit getResources().getDisplayMetrics().density zu multiplizieren, um die Skalierung der Anzeige zu berücksichtigen.
0 Stimmen
Dies beweist, dass die am meisten hochgestufte Antwort nicht immer die beste ist (& viele Leute wiederholen Antworten, um sie zu wiederholen). Anstelle von getSize und der veralteten getWidth/getHeight-Kombination (Fehler ignorieren), versuchen Sie Balaji.K's
getMetrics
. Der Kommentar von Nik in seiner Antwort erklärt sogargetDisplayMetrics
um die Größe der System-/Statusleiste zu berücksichtigen. Sie können auch verwenden Dichte wie jmaculate und LoungeKatt erklärt haben, um die EXAKT Wert:DisplayMetrics dm = getResources().getDisplayMetrics(); float fwidth = dm.density * dm.widthPixels;
Getestet in Android v2.2 (API 8) und v4.0 mit guten Ergebnissen und keine Fehler/Warnungen .0 Stimmen
DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels;
0 Stimmen
Eine weitere Möglichkeit, die DisplayMetrics zu erhalten:
Resources.getSystem().getDisplayMetrics()
. Sie brauchen keineContext
um sie zu bekommen.