1969 Stimmen

Wie man in Android die Bildschirmabmessungen als Pixel erhält

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 sogar getDisplayMetrics 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 .

16voto

Verwenden Sie den folgenden Code in Activity.

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int wwidth = metrics.widthPixels;

14voto

RenniePet Punkte 10740

Dies ist keine Antwort für den Auftraggeber, da er die Anzeigegröße in echten Pixeln haben wollte. Ich wollte die Abmessungen in "geräteunabhängigen Pixeln", und das Zusammenstellen von Antworten von hier https://stackoverflow.com/a/17880012/253938 und hier https://stackoverflow.com/a/6656774/253938 Ich habe mir dies ausgedacht:

    DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
    int dpHeight = (int)(displayMetrics.heightPixels / displayMetrics.density + 0.5);
    int dpWidth = (int)(displayMetrics.widthPixels / displayMetrics.density + 0.5);

14voto

Sharath kumar Punkte 3964

Um die Abmessungen des Bildschirms zu ermitteln, verwenden Sie Anzeigemetriken

DisplayMetrics displayMetrics = new DisplayMetrics();
if (context != null) 
      WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
      Display defaultDisplay = windowManager.getDefaultDisplay();
      defaultDisplay.getRealMetrics(displayMetrics);
    }

Höhe und Breite in Pixeln ermitteln

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

14voto

Sergei Pikalev Punkte 516

Ich muss sagen, dass Sie, wenn Sie nicht in Activity sondern in View (oder eine Variable von View Typ in Ihrem Geltungsbereich), ist es nicht nötig, die WINDOW_SERVICE . Dann können Sie mindestens zwei Möglichkeiten nutzen.

Erstens:

DisplayMetrics dm = yourView.getContext().getResources().getDisplayMetrics();

Zweitens:

DisplayMetrics dm = new DisplayMetrics();
yourView.getDisplay().getMetrics(dm);

Alle diese Methoden, die wir hier aufrufen, sind nicht veraltet.

14voto

Shoaib Ahmed Punkte 680
public class AndroidScreenActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        String str_ScreenSize = "The Android Screen is: "
                                   + dm.widthPixels
                                   + " x "
                                   + dm.heightPixels;

        TextView mScreenSize = (TextView) findViewById(R.id.strScreenSize);
        mScreenSize.setText(str_ScreenSize);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X