พิกัดหน้าจอ android ทำงานอย่างไร


154

ฉันทำงานกับ Android Animationและฉันพบว่าระบบพิกัด Android ค่อนข้างสับสนดังนั้นฉันจึงมาที่นี่เพื่อถามคำถามเกี่ยวกับวิธีการทำงานของพิกัดใน Android ฉันกำลังติดตามภาพนี้เพื่อเลื่อนมุมมองหนึ่งไปยังอีกมุมมองหนึ่ง แต่ดูเหมือนว่ามันไม่ทำงาน:

ภาพ

คำตอบ:


295

ป้อนคำอธิบายรูปภาพที่นี่

ภาพนี้แสดงการวางแนวทั้งสอง (แนวนอน / แนวตั้ง)

หากต้องการรับ MaxX และ MaxY ให้อ่านต่อ

สำหรับพิกัดหน้าจออุปกรณ์ Android แนวคิดด้านล่างจะทำงาน

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

แก้ไข: - ** ** สำหรับอุปกรณ์ที่รองรับ Android API ระดับเก่ากว่า 13 สามารถใช้รหัสด้านล่าง

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

(x, y): -

1) (0,0)เป็นมุมบนซ้าย

2) (maxX, 0)เป็นมุมบนขวา

3) (0, maxY)คือมุมซ้ายล่าง

4) (maxX, maxY)อยู่มุมล่างขวา

นี่ maxX และ maxY เป็นความสูงและความกว้างสูงสุดของหน้าจอเป็นพิกเซลซึ่งเราได้รับรหัสข้างต้นที่ได้รับ


หากเราได้รับViewพร้อมกับlayout_width="1" layout_height="1"มันหมายความว่าด้านบนซ้ายคือ (0,0) และด้านล่างขวาคือ (1, 1)? นั่นหมายความว่าViewwidth = 2 และ height = 2 หรือไม่ ความขัดแย้ง.
riwnodennyk

@ AAnkit คุณสามารถโปรด confrim นี้ใช้ได้ทั้งแนวหน้าจอ (แนวตั้งและแนวนอน) การเปลี่ยนแปลงการวางแนวหน้าจอมีผลกับ (0,0) -> มุมซ้ายบน (maxX, 0) -> มุมบนขวา (0, maxY) -> มุมล่างซ้าย (maxX, maxY) -> มุมล่างขวา
Qadir Hussain

ขอบคุณมากสำหรับภาพ มันช่วยชีวิตฉันได้จริงๆ
Sharl Sherif

19

สำหรับ Android API ระดับ 13 และคุณต้องใช้สิ่งนี้:

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

จากนั้น (0,0) เป็นมุมบนซ้ายและ (maxX, maxY) เป็นมุมล่างขวาของหน้าจอ

'getWidth ()' สำหรับขนาดหน้าจอเลิกใช้แล้วตั้งแต่ API 13

นอกจากgetwidth ()และgetHeight ()เป็นวิธีการของandroid.view.View ชั้นใน android.So เมื่อเรียน Java ของคุณขยายดูชั้นไม่มีค่าโสหุ้ย WindowManager

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

ง่ายเหมือนที่


3

ภาพนี้จะลบความสับสนของทุกคนหวังว่าซึ่งเป็นที่เก็บรวบรวมมาจากที่นั่น

พิกัดหน้าจอ Android

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.