ไม่มีคำตอบที่ถูกต้องมีจริงสอง:
- แนะนำโดย Google (เช่นในหลักสูตร Udacity เกี่ยวกับการออกแบบวัสดุ): ใช้การแปลงอย่างง่าย ๆ ซึ่งในหลายกรณีคือ 1: 1 เช่นเดียวกับในไลบรารีโพลิเมอร์ มันไม่เหมาะสำหรับการแสดงเรตินาดังนั้นแทนที่จะใช้ 1: 1 ให้ใช้อัตราส่วนความหนาแน่นที่ระบุไว้ในตารางอุปกรณ์ในคู่มือการออกแบบวัสดุอย่างเป็นทางการ ( ตารางที่มีอัตราส่วนและตัวชี้วัดเฉพาะสำหรับอุปกรณ์ยอดนิยมบางรุ่น ) และให้คำสั่ง @media ที่เหมาะสมสำหรับ เกณฑ์ความละเอียดและสินทรัพย์สมมติ 1DP ที่เป็น 1px ที่เท่าเทียมกันสำหรับการแสดงผล mdpi (160dpi / PPI)
หมายเหตุ: แนวคิดโดยรวม: ที่ด้านล่างของหน้า: การปรับขนาดรูปภาพด้วยรูปภาพเพื่อดูอัตราส่วนภาพสำหรับเกณฑ์ความละเอียดหน้าจอหลายจุด (ภาพจุดพัก)
- หากคุณต้องการความสอดคล้องอย่างยิ่งในการออกแบบสำหรับอุปกรณ์เฉพาะคุณต้องทำการวิจัยและการคำนวณเพิ่มเติมและสิ่งที่สำคัญกว่าคือมีการสืบค้น @media เพิ่มเติมเพื่อสนับสนุนอุปกรณ์จำนวนมากเท่าที่คุณต้องการและให้ทางเลือก (ด้วย วิธีการที่กล่าวถึงในสถานที่แรก) สำหรับสิ่งที่คุณไม่สนใจมาก
นี่คือข้อมูลรายละเอียดเพิ่มเติมสำหรับผู้ที่ต้องการดำน้ำในหัวข้อมากขึ้น แต่มันเป็นคำอธิบายและตรรกะที่อยู่เบื้องหลังข้างต้นเป็นคำตอบที่สมบูรณ์ :
ประเด็นก็คือ "ความหนาแน่นของพิกเซล" ตามคู่มืออย่างเป็นทางการของการออกแบบวัสดุ (เลย์เอาต์> หน่วยและการวัด) คือ:
จำนวนพิกเซลที่พอดีกับนิ้ว
ดังนั้นโดยทั่วไปความหนาแน่นของพิกเซลเป็นชื่อใหม่สำหรับค่า PPI หรือตั้งแต่ผู้คนจำนวนมากไม่รู้จักนี้เป็นสิ่งที่แยกจากกัน, ค่า dpi
คำจำกัดความของ 1dp ตามคำแนะนำเดียวกัน:
DP เท่ากับพิกเซลทางหนึ่งบนหน้าจอที่มีความหนาแน่นของ 160 ในการคำนวณ dp:
dp = (ความกว้างเป็นพิกเซล * 160) / ความหนาแน่นของหน้าจอ
เมื่อเขียน CSS ใช้ px ไม่ว่าจะเป็น dp หรือ sp หรือไม่ Dp จำเป็นต้องใช้ในการพัฒนาสำหรับ Android เท่านั้น
แกนหลักของการออกแบบวัสดุคือการรักษาขนาดทางกายภาพที่สอดคล้องกันในแพลตฟอร์มที่แตกต่างกันซึ่งเพิ่มปัญหาของความละเอียดเดสก์ท็อป, ppi (/ dpi) และพิกเซล css ซึ่งในกรณีนี้คุณควรติดคำนวณ dp เช่นเดียวกับ Android อุปกรณ์และมันไม่เป็นความจริงที่หน้าจอส่วนใหญ่เป็น 96ppi (มันเป็นข้อสันนิษฐานที่สำคัญสำหรับ CSS) ส่วนใหญ่ของมันมี ppi ที่สูงกว่าเล็กน้อยและถ้าคุณคำนึงถึงไม่เพียง แต่เดสก์ท็อปธรรมดาเท่านั้น หรือแท็บเล็ตหรือ "คอนเวอร์ทิเบิล" เช่น Surface มีความต้องการการแปลง: โดยปกติจะอยู่ในช่วง 100-130ppi ซึ่งกล่าวว่าสิ่งที่ฉันใช้อยู่ในขณะนี้คือ 127ppi:
100% = 160ppi -> ความกว้างทางกายภาพ 1 พิกเซล = 1dp -> สี่เหลี่ยมผืนผ้า 100x100px = 100x100dp
79% = 127ppi -> ความกว้างทางกายภาพ 1 พิกเซล = ca. 0,8dp -> สี่เหลี่ยมผืนผ้า 100x100px = 80x80dp
แม้ว่า dp เป็นหน่วยบริสุทธิ์และใหม่เฉพาะสำหรับ Android คุณควรทำการคำนวณบางอย่างเพื่อปรับรูปแบบ MD ซึ่งมาในรูปแบบ dp หากคุณต้องการทราบเพิ่มเติมว่าองค์ประกอบเฉพาะจะมีขนาดใหญ่เพียงใดในแง่ที่มีประโยชน์มากที่สุดสำหรับจุดประสงค์ของคำถามคือค่าช่วงขนาดสัมผัสในอุดมคติในแนวทางการออกแบบวัสดุสำหรับอุปกรณ์เฉพาะ ** ต่ำกว่าค่า dp ทางกายภาพ ** การเปลี่ยนแปลงค่า dp แต่ทางกายภาพยังคงเหมือนเดิม
ปัญหาที่คุณต้องคำนวณหน่วยมีอธิบายเพิ่มเติมในคู่มือ Android API (การแปลงหน่วย dp เป็นหน่วยพิกเซล) และยังใช้กับองค์ประกอบที่มีสไตล์ด้วย CSS:
ในบางกรณีคุณจะต้องแสดงส่วนข้อมูลเป็น dp แล้วแปลงเป็น> พิกเซล
ลองนึกภาพแอพพลิเคชั่นที่รับรู้การเลื่อนหรือการเหวี่ยงของนิ้วหลังจากผู้ใช้เลื่อนนิ้วอย่างน้อย 16 พิกเซล บนหน้าจอพื้นฐานผู้ใช้จะต้องเลื่อน 16 พิกเซล / 160 dpi ซึ่งเท่ากับ 1 / 10th ของนิ้ว (หรือ 2.5 มม.) ก่อนที่ท่าทางจะได้รับการยอมรับ บนอุปกรณ์ที่มีจอแสดงผลความหนาแน่นสูง (240dpi) ผู้ใช้จะต้องเลื่อน 16 พิกเซล / 240 dpi ซึ่งเท่ากับ 1 / 15th ของนิ้ว (หรือ 1.7 มม.) ระยะทางสั้นกว่ามากและแอปพลิเคชันจะปรากฏขึ้นที่มีความไวต่อผู้ใช้มากขึ้น
การแปลงพอลิเมอร์ที่กล่าวถึงก่อนหน้านี้ 1: 1 อาจเป็นเพราะความหนาแน่นของ 96dpi หรือแม้กระทั่งที่ฉันให้ไว้อยู่ที่ไหนสักแห่งในความหนาแน่นต่ำหรือแม้กระทั่ง (ในกรณีของ 96dpi) กลุ่มต่ำกว่า เมื่อคำนึงถึงว่าค่า dp นั้นไม่ใช่ css ที่ยอมรับก็ง่ายกว่าที่จะสมมติว่าอัตราส่วนความหนาแน่น (0,75- สำหรับต่ำ, 1,0 กลางและอื่น ๆ ) เป็นสิ่งที่ควรใช้สำหรับการทำให้เข้าใจง่ายและหลายขนาด การสนับสนุนหน้าจอซึ่งจะแสดงในตารางอุปกรณ์สำหรับการออกแบบวัสดุที่กล่าวถึงก่อนหน้านี้ แม้จะกล่าวถึงว่าเป็นหนึ่งในวิธีปฏิบัติที่ดีที่สุดในบทที่กล่าวถึงข้างต้นของคู่มือ Android API และนั่นคือสิ่งที่การแปลงโพลิเมอร์ 1: 1 อาจดีเนื่องจากอุปกรณ์จำนวนมากมีอัตราส่วนความหนาแน่นที่ระดับ 1
กลับไปสู่ภาวะที่กลืนไม่เข้าคายไม่ออกครั้งสุดท้าย: css px หากคุณตัดสินใจที่จะดำน้ำในความแตกต่างเล็กน้อยของอุปกรณ์ที่แตกต่างกัน หากคุณเป็นคนที่ไม่ค่อยจะถามอะไรเลยเพียงแค่ยึดอัตราส่วนความหนาแน่นจากตาราง MD แต่ถ้าคุณเป็นพวกชอบความสมบูรณ์แบบความละเอียดของพิกเซล CSS และมิติข้อมูลทางกายภาพนั้นมีคำอธิบายที่สมบูรณ์แบบ (และคำอธิบายง่ายๆ) ในW3C Candidate Recomendation:
หน่วยความยาวที่แน่นอนได้รับการแก้ไขในความสัมพันธ์กับแต่ละอื่น ๆ และยึดกับวัดทางกายภาพบางอย่าง ส่วนใหญ่จะเป็นประโยชน์เมื่อทราบว่าสภาพแวดล้อมเอาต์พุต หน่วยสัมบูรณ์ประกอบด้วยหน่วยทางกายภาพ ('in', 'cm', 'mm', 'pt', 'pc', 'q') และหน่วยมุมภาพ ('px') :
สำหรับการอ่านที่ความยาวของแขน 1px จึงสอดคล้องกับประมาณ 0.26 มม. (1/96 นิ้ว)
หมายเหตุ: โปรดทราบว่าคำจำกัดความของหน่วยพิกเซลและหน่วยทางกายภาพนี้แตกต่างจาก CSS รุ่นก่อนหน้า โดยเฉพาะอย่างยิ่งในรุ่นก่อนหน้าของ CSS หน่วยพิกเซลและหน่วยทางกายภาพไม่เกี่ยวข้องกับอัตราส่วนคงที่: หน่วยทางกายภาพมักจะเชื่อมโยงกับการวัดทางกายภาพของพวกเขาในขณะที่หน่วยพิกเซลจะแตกต่างกันมากที่สุดตรงกับพิกเซลอ้างอิง (การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากเนื้อหาที่มีอยู่มากเกินไปนั้นขึ้นอยู่กับสมมติฐานที่ 96dpi และการทำลายสมมติฐานนั้นทำให้เนื้อหาแตกต่างกัน)
คำจำกัดความใหม่ของ px (คำนึงถึงมิติทางกายภาพ) เติมช่องว่างระหว่างพิกเซล CSS และ dps และช่วยให้เราตรวจสอบให้แน่ใจว่าโดยใช้การคำนวณการวัดอย่างง่าย ๆ ในสภาพแวดล้อมเอาท์พุทที่เรียกว่าซึ่งในกรณีนี้จะสอดคล้องกัน ) เค้าโครง MDยังคงเหมือนเดิมในอุปกรณ์และแพลตฟอร์มที่ต่างกัน ยิ่งกว่านั้นทั้งแนวทาง W3C และ MD ใช้รูปภาพอุปกรณ์ต่ำและความละเอียดสูงเพื่อแสดงแนวคิดหลักของการครอบคลุมพิกเซล / จุด - จำเป็นต้องใช้พิกเซลอุปกรณ์ (จุด) ในการครอบคลุมพื้นที่ 1px คูณ 1px บนอุปกรณ์ที่มีความละเอียดสูงกว่า บนความละเอียดต่ำซึ่งหมายความว่าการใช้ CSS ในการค้นหาจอเรตินานั้นเป็นสิ่งเดียวกับที่คุณต้องให้ (แต่มีขีด จำกัด มากกว่า) สำหรับการออกแบบวัสดุและอุปกรณ์มือถือทั้งหมด
โดยสรุปใช้อัตราส่วนความหนาแน่นของ MD ซึ่งเป็นแนวทางปฏิบัติที่ดีที่สุดที่แนะนำโดย Googleหรือถ้าคุณกำหนดค่าความแม่นยำหรือการออกแบบของคุณต้องสอดคล้องกับขนาดจริง: ใช้การแปลงที่แม่นยำโดยใช้ค่า ppi / dpi เฉพาะหรือทั่วไป อุปกรณ์ (ซึ่งค่อนข้างบ้า) สิ่งที่คุณสามารถทดสอบเครื่องมือออนไลน์ของ Google Resizer ได้อย่างง่ายดายเพราะพวกเขาเคารพเกณฑ์ทั่วไปที่แนะนำใน MD Guide ในสถานที่แรกและกฎการหารสำหรับอัตราส่วนและชื่อประเภทการแสดงผลที่เกี่ยวข้อง (ขนาดใหญ่ปานกลางและอื่น ๆ ) ดำเนินการในมัน
ดังนั้นติดกับอัตราส่วน MD จากตารางโดยจำไว้ว่าขนาดพิกเซลอ้างอิง dp เท่ากับสำหรับความละเอียด mdpi (160)และคุณจะดี
em/rem
ทุกที่แล้วปรับขนาดตัวอักษรพื้นฐานสำหรับแต่ละความละเอียด