11
วิธีรับพิกัดที่แน่นอนของมุมมอง
ฉันกำลังพยายามหาพิกัดพิกเซลของหน้าจอสัมบูรณ์ที่มุมซ้ายบนของมุมมอง อย่างไรก็ตามวิธีการทั้งหมดที่ฉันสามารถค้นหาเช่นgetLeft()และจะไม่ได้ทำงานตามที่พวกเขาทั้งหมดดูเหมือนจะเป็นญาติไปยังผู้ปกครองของมุมมองจึงให้ฉันgetRight() 0วิธีที่เหมาะสมในการทำเช่นนี้คืออะไร? ถ้าช่วยได้นี่เป็นเกม 'นำภาพกลับมาเรียงตามลำดับ' ฉันต้องการให้ผู้ใช้สามารถวาดกล่องเพื่อเลือกหลาย ๆ ชิ้นได้ ข้อสันนิษฐานของฉันคือวิธีที่ง่ายที่สุดในการทำเช่นนั้นคือไปgetRawX()และgetRawY()กลับจากMotionEventและเปรียบเทียบค่าเหล่านั้นกับมุมซ้ายบนของโครงร่างที่ถือส่วนต่างๆ เมื่อรู้ขนาดของชิ้นส่วนแล้วฉันสามารถกำหนดจำนวนชิ้นที่เลือกได้ ฉันรู้ว่าฉันสามารถใช้getX()และgetY()บนได้MotionEventแต่เนื่องจากนั่นส่งคืนตำแหน่งสัมพัทธ์ที่ทำให้การเลือกชิ้นส่วนใดยาก (เป็นไปไม่ได้ฉันรู้ แต่ดูเหมือนว่าจะซับซ้อนโดยไม่จำเป็น) แก้ไข: นี่คือรหัสที่ฉันใช้เพื่อพยายามรับขนาดของคอนเทนเนอร์ที่ถือครองตามคำถามข้อใดข้อหนึ่ง TableLayoutเป็นตารางที่เก็บชิ้นส่วนปริศนาทั้งหมด TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout); Log.d(LOG_TAG, "Values " + tableLayout.getTop() + tableLayout.getLeft()); แก้ไข 2: นี่คือรหัสที่ฉันได้ลองทำตามคำตอบที่แนะนำเพิ่มเติม public int[] tableLayoutCorners = new int[2]; (...) TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout); tableLayout.requestLayout(); Rect corners = new Rect(); tableLayout.getLocalVisibleRect(corners); …