This works but the value I get is multiplied times the screen density factor
(1.5 for hdpi, 2.0 for xhdpi, etc).
ฉันคิดว่ามันเป็นการดีที่จะได้รับค่าตามความละเอียด แต่ถ้าคุณไม่ต้องการทำสิ่งนี้ให้เป็น px .......
พิกเซลความหนาแน่นอิสระ (dp)
หน่วยพิกเซลเสมือนที่คุณควรใช้เมื่อกำหนดเค้าโครง UI เพื่อแสดงขนาดหรือตำแหน่งของเค้าโครงในแบบที่ไม่ขึ้นกับความหนาแน่น พิกเซลความหนาแน่นอิสระนั้นเทียบเท่ากับฟิสิคัลพิกเซลหนึ่งพิกเซลบนหน้าจอ 160 dpi ซึ่งเป็นความหนาแน่นพื้นฐานที่ระบบใช้สำหรับหน้าจอความหนาแน่น "ปานกลาง" ที่รันไทม์ระบบจะจัดการปรับขนาดของหน่วย dp ตามความจำเป็นbased on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels.
คุณควรใช้หน่วย dp เสมอเมื่อกำหนด UI ของแอปพลิเคชันของคุณเพื่อให้แน่ใจว่าการแสดง UI ของคุณบนหน้าจอที่มีความหนาแน่นแตกต่างกัน
ฉันคิดว่ามันเป็นการดีที่จะเปลี่ยนค่าตามความละเอียด แต่ถ้าคุณไม่ต้องการทำสิ่งนี้ให้ px .......
อ้างอิงลิงค์นี้
ตามนี้
DP
พิกเซลความหนาแน่นอิสระ - หน่วยนามธรรมที่ยึดตามความหนาแน่นทางกายภาพของหน้าจอ หน่วยเหล่านี้สัมพันธ์กับหน้าจอ 160 dpi (จุดต่อนิ้ว) ซึ่ง 1dp นั้นประมาณเท่ากับ 1px When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down.
อัตราส่วนของพิกเซลต่อพิกเซลจะเปลี่ยนตามความหนาแน่นของหน้าจอ แต่ไม่จำเป็นต้องเป็นสัดส่วนโดยตรง การใช้หน่วย dp (แทนหน่วย px) เป็นวิธีง่ายๆในการทำให้ขนาดมุมมองในโครงร่างของคุณปรับขนาดอย่างถูกต้องสำหรับความหนาแน่นของหน้าจอที่แตกต่างกัน กล่าวอีกนัยหนึ่งมันให้ความสอดคล้องสำหรับขนาดจริงขององค์ประกอบ UI ของคุณในอุปกรณ์ต่าง ๆ
px
พิกเซล - สอดคล้องกับพิกเซลจริงบนหน้าจอ ไม่แนะนำให้ใช้หน่วยวัดนี้เนื่องจากการแสดงจริงอาจแตกต่างกันไปตามอุปกรณ์ อุปกรณ์แต่ละชิ้นอาจมีจำนวนพิกเซลต่อนิ้วที่แตกต่างกันและอาจมีพิกเซลทั้งหมดที่มีอยู่บนหน้าจอ
getDimensionPixelSize(int id)
ที่ระบุว่าจะส่งคืนเป็น Pixel ดังนั้นgetDimension(int id)
ควรกลับมาเป็น dp (หน่วยพึ่งพาอิสระ) ซึ่งจะพร้อมใช้งานเช่นกับ ViewsetPadding