Bagaimana cara kerja koordinat layar android?


154

Saya bekerja dengan Android Animationdan saya menemukan sistem koordinat Android sangat membingungkan sehingga saya di sini untuk mengajukan pertanyaan ini tentang bagaimana koordinat bekerja di Android. Saya mengikuti gambar ini untuk memindahkan satu tampilan ke tampilan lain tetapi sepertinya tidak berfungsi:

gambar

Jawaban:


294

masukkan deskripsi gambar di sini

Gambar ini menyajikan orientasi (Lanskap / Potret)

Untuk mendapatkan MaxX dan MaxY, baca terus.

Untuk koordinat layar perangkat Android, konsep di bawah ini akan berfungsi.

Display mdisp = getWindowManager().getDefaultDisplay();
Point mdispSize = new Point();
mdisp.getSize(mdispSize);
int maxX = mdispSize.x; 
int maxY = mdispSize.y;

Sunting: - ** ** untuk perangkat yang mendukung Android api level lebih tua dari 13. Dapat menggunakan kode di bawah ini.

    Display mdisp = getWindowManager().getDefaultDisplay();
    int maxX= mdisp.getWidth();
    int maxY= mdisp.getHeight();

(x, y): -

1) (0,0) adalah sudut kiri atas.

2) (maksx, 0) adalah sudut kanan atas

3) (0, maks.) Adalah sudut kiri bawah

4) (MaksX, Maks) adalah sudut kanan bawah

di sini maxX dan maxY adalah tinggi dan lebar layar maksimum dalam piksel, yang telah kita ambil dalam kode yang diberikan di atas.


Jika kita dapatkan Viewdengan layout_width="1" layout_height="1"apakah itu berarti kiri atas (0,0) dan kanan bawah (1, 1)? Bukankah itu berarti Viewlebar = 2 dan tinggi = 2? Kontradiksi.
riwnodennyk

@Ankit dapat Anda konfirmasikan, ini berlaku untuk kedua orientasi layar (Portrait dan Landscape), apakah perubahan orientasi layar mempengaruhi pada (0,0) -> sudut kiri atas. (maksx, 0) -> sudut kanan atas (0, maksY) -> sudut kiri bawah (maksX, maksY) -> sudut kanan bawah
Qadir Hussain

Terima kasih banyak atas gambarnya. itu benar-benar menyelamatkan hidup saya.
Sharl Sherif

19

Untuk Android API level 13 dan Anda harus menggunakan ini:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int maxX = size.x; 
int maxY = size.y;

Kemudian (0,0) adalah sudut kiri atas dan (maxX, maxY) adalah sudut kanan bawah layar.

'GetWidth ()' untuk ukuran layar sudah tidak digunakan lagi sejak API 13

Selanjutnya getwidth () dan getHeight () adalah metode android.view.View kelas di android. Jadi ketika kelas java Anda memperluas Lihat kelas tidak ada overhead windowManager.

          int maxX=getwidht();
          int maxY=getHeight();

sesimpel itu.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.