Mipmap drawable สำหรับไอคอน


449

ตั้งแต่ Android 4.3 (Jelly Bean) ตอนนี้เราสามารถใช้res/mipmapโฟลเดอร์เพื่อเก็บภาพ "mipmap"

ตัวอย่างเช่นChrome สำหรับ Androidเก็บไอคอนไว้ในโฟลเดอร์เหล่านี้แทนที่จะเป็นres/drawableโฟลเดอร์ปกติ

รูปภาพ mipmap เหล่านี้แตกต่างจากรูปภาพอื่น ๆ ที่คุ้นเคยได้อย่างไร

ฉันเห็นว่าในรายการของฉันเราใช้@mipmap/qualifier แทน@drawable/ซึ่งทำให้เหมาะสมกับชื่อโฟลเดอร์ทรัพยากร:

<activity
    android:name=".MipmapDemp"
    android:icon="@mipmap/ic_launcher" />

อ้างอิง:

Android 4.3 APIsเอกสารมีดังต่อไปนี้จะพูดว่า:

การใช้ mipmap เป็นแหล่งข้อมูลสำหรับบิตแมปหรือ drawable ของคุณเป็นวิธีที่ง่ายในการจัดเตรียมรูปภาพคุณภาพและขนาดรูปภาพต่าง ๆ ซึ่งมีประโยชน์อย่างยิ่งหากคุณคาดว่ารูปภาพของคุณจะถูกปรับสัดส่วนในระหว่างการเคลื่อนไหว

Android 4.2 (API ระดับ 17) เพิ่มการสนับสนุนสำหรับ mipmaps ในคลาส Bitmap - Android จะทำการแลกเปลี่ยนรูปภาพ mip ใน Bitmap ของคุณเมื่อคุณให้แหล่งข้อมูล mipmap และเปิดใช้งาน setHasMipMap () ตอนนี้ใน Android 4.3 คุณสามารถเปิดใช้งาน mipmaps สำหรับวัตถุ BitmapDrawable ได้เช่นกันโดยจัดเตรียมเนื้อหา mipmap และตั้งค่าแอตทริบิวต์ android: mipMap ในไฟล์ทรัพยากรบิตแมปหรือโดยการเรียก hasMipMap ()

ฉันไม่เห็นอะไรเลยที่นั่นช่วยให้ฉันเข้าใจ


ทรัพยากร Bitmap XMLมีandroid:mipMapคุณสมบัติ:

บูลีน เปิดใช้งานหรือปิดใช้งานคำใบ้ mipmap ดูที่ setHasMipMap () สำหรับข้อมูลเพิ่มเติม ค่าเริ่มต้นเป็นเท็จ

สิ่งนี้ใช้ไม่ได้กับไอคอนตัวเรียกใช้งานเท่าที่ฉันเห็น


คำถามที่ได้รับการเลี้ยงดูใน Google Groups ( จุดประสงค์ของชื่อทรัพยากร "มิพแมพ" ?! ) ซึ่ง Romain ผู้ชายตอบว่า:

มีประโยชน์ในการจัดเตรียมรูปภาพที่ความละเอียดที่ใหญ่กว่าซึ่งโดยทั่วไปจะคำนวณ (ตัวอย่างเช่นบนอุปกรณ์ mdpi Launcher อาจต้องการไอคอน hdpi ที่ใหญ่กว่าเพื่อแสดงทางลัดแอปขนาดใหญ่)

ฉันรู้สึกเช่นนี้เกือบจะเข้าใจได้ แต่ไม่มาก

ฉันยังอยากไปกับการติดตามของ Randy Sugianto:

อะไรคือข้อดีของสิ่งนี้ มีคำแนะนำวิธีการใช้ mipmaps ซึ่งอาจเป็นไอคอนตัวเรียกใช้ที่ดีกว่าหรือไม่


แน่นอนว่าWikipedia มีหน้าสำหรับ "Mipmap"ซึ่งหมายถึงเทคนิคเก่าที่คิดค้นในปี 1983 ซึ่งฉันไม่สามารถเกี่ยวข้องกับการนำ Android ไปใช้ในปัจจุบันได้


เราควรจะเก็บไอคอนแอพres/mipmapของเราทั้งหมดในโฟลเดอร์วันนี้และแนวทางสำหรับภาพ mipmap เหล่านี้คืออะไร?


อัปเดต # 1

นี่คือบล็อกโพสต์ที่พยายามอธิบายเล็กน้อย

แต่ภาพที่ใช้ในการโพสต์บล็อกนั้นแสดงให้เห็นว่าไฟล์หนึ่งมีโลโก้มากมาย นี่ไม่ใช่สิ่งที่ฉันเห็นในโฟลเดอร์ mipmap ของ Chrome

mipmap-hdpiโฟลเดอร์ของ Chrome มีสามภาพ หนึ่งคือโลโก้ Chrome ด้วยตัวเอง

Chrome mipmap-hdpi icon.png

น่าแปลกที่มันคือ 72x72 ไม่ใช่ 48x48 ซึ่งฉันคาดว่าจะเห็น

บางทีนั่นคือทั้งหมดที่มีอยู่ - เราแค่ต้องเก็บไอคอนที่ใหญ่กว่าไว้ในโฟลเดอร์ mipmap?


อัปเดต # 2

โพสต์บล็อกนักพัฒนา Android ของ 23/10/2557 ยืนยันความคิดในการใช้mipmapโฟลเดอร์สำหรับไอคอนแอปพลิเคชันอีกครั้ง:

เมื่อพูดถึงความหนาแน่นของหน้าจอ Nexus 6 ผู้เขียนเขียน:

เป็นวิธีที่ดีที่สุดที่จะวางไอคอนแอพของคุณในโฟลเดอร์ mipmap- (ไม่ใช่โฟลเดอร์ drawable-) เพราะมันถูกใช้ที่ความละเอียดต่างจากความหนาแน่นปัจจุบันของอุปกรณ์ ตัวอย่างเช่นไอคอนแอป xxxhdpi สามารถใช้กับตัวเรียกใช้งานสำหรับอุปกรณ์ xxhdpi


อัปเดต # 3

โปรดทราบว่า Android Studio สร้างic_launcher.pngไอคอนในmipmap...โฟลเดอร์แทนที่จะเป็นdrawable...โฟลเดอร์ที่ Eclipse ใช้เพื่อสร้างไอคอนเหล่านั้น


คำตอบ:


260

มีการใช้ mipmaps ที่แตกต่างกันสองแบบ:

  1. สำหรับไอคอนตัวเรียกใช้เมื่อสร้าง APK เฉพาะของความหนาแน่น นักพัฒนาบางคนสร้าง APK ที่แยกกันสำหรับทุกความหนาแน่นเพื่อให้ขนาด APK ลง อย่างไรก็ตามตัวเรียกใช้งานบางตัว (มาพร้อมกับอุปกรณ์บางตัวหรือมีอยู่ใน Play Store) ใช้ขนาดไอคอนที่ใหญ่กว่าขนาดมาตรฐาน 48dp ตัวเรียกใช้ใช้ getDrawableForDensity และย่อขนาดถ้าต้องการแทนที่จะเป็นไอคอนดังนั้นคุณภาพจึงสูง ตัวอย่างเช่นแท็บเล็ต hdpi ตัวเรียกใช้งานอาจโหลดไอคอน xhdpi ด้วยการวางไอคอนตัวเรียกใช้งานของคุณในไดเรกทอรี mipmap-xhdpi มันจะไม่ถูกแยกในลักษณะที่ไดเรกทอรี drawable-xhdpi คือเมื่อสร้าง APK สำหรับอุปกรณ์ hdpi หากคุณกำลังสร้าง APK สำหรับอุปกรณ์ทุกเครื่องสิ่งนี้ไม่สำคัญเลยเพราะตัวเรียกใช้งานสามารถเข้าถึงทรัพยากรที่ใช้งานได้สำหรับความหนาแน่นที่ต้องการ

  2. mipmap API จริงจาก 4.3 ฉันไม่ได้ใช้สิ่งนี้และไม่คุ้นเคย มันไม่ได้ถูกใช้โดยตัวเรียกใช้งานโครงการโอเพ่นซอร์สของ Android และฉันไม่รู้จักตัวเรียกใช้งานอื่น


2
ดังนั้นคุณแนะนำการสร้างสคริปต์ที่แถบโฟลเดอร์ความหนาแน่นไม่ถูกต้องทั้งหมดยกเว้นทรัพยากร mipmap ถ้าฉันเข้าใจถูกต้องหรือไม่
Richard Le Mesurier

20
ฉันขอแนะนำให้สร้างเพียง APK เดียวสำหรับทุกความหนาแน่นและไม่ต้องกังวล แต่ใช่เหตุผลที่ไดเรกทอรี mipmap บางครั้งใช้สำหรับไอคอนตัวเรียกใช้งานนั้นเป็นเพราะการสร้างสคริปต์ (aapt --preferred-configurations) การลอกไดเรกทอรี drawable- {density} แต่ไม่ใช่ไดเรกทอรี Mipmap- {density} ดูเหมือนว่าจะเป็นการใช้ประโยชน์จากข้อบกพร่อง แต่คำพูดของคุณจาก Romain Guy และ Diane Hackborn โพสต์ที่plus.google.com/105051985738280261832/posts/QTA9McYan1Lแสดงให้เห็นว่ามันเกิดจากการออกแบบ
Kevin TeslaCoil

3
ดังนั้นกระบวนการทั่วไปของฉันในการลบ mipmap การวางไอคอนของฉันลงใน drawable และสร้าง APK เดียวก็สมบูรณ์แบบ ดูเหมือนว่า mipmap นั้นผิดปกติสำหรับพวกเราส่วนใหญ่ แต่ก็บังคับให้พวกเราทุกคน
คนอยู่ที่ไหนสักแห่ง

ในเอกสารอธิบายว่า: "mipmap: ไฟล์ที่วาดได้สำหรับไอคอนตัวเรียกใช้ที่หลากหลาย" developer.android.com/guide/topics/resources/…
กิจกรรม

79

ดูเหมือนว่า Google จะอัปเดตเอกสารของพวกเขาตั้งแต่คำตอบเหล่านี้ดังนั้นหวังว่านี่จะช่วยคนอื่นในอนาคต :) เพิ่งเจอคำถามนี้ด้วยตัวเองในขณะที่สร้างโครงการใหม่ (ใหม่)

TL; DR: drawables อาจถูกดึงออกมาเป็นส่วนหนึ่งของการปรับแต่งทรัพยากรเฉพาะของ dp Mipmaps จะไม่ถูกปล้น

แอพตัวเปิดหน้าจอหลักที่แตกต่างกันในอุปกรณ์ต่าง ๆ จะแสดงไอคอนตัวเรียกใช้งานแอปที่ความละเอียดต่างๆ เมื่อเทคนิคการปรับให้เหมาะสมทรัพยากรแอปลบทรัพยากรสำหรับความหนาแน่นของหน้าจอที่ไม่ได้ใช้ไอคอนตัวเรียกใช้สามารถปิดการมองหาเลือนเพราะแอปตัวเรียกใช้งานจะต้องวางไอคอนความละเอียดต่ำลงเพื่อแสดงผล เพื่อหลีกเลี่ยงปัญหาการแสดงผลแอพควรใช้mipmap/โฟลเดอร์ทรัพยากรสำหรับไอคอนตัวเรียกใช้ ระบบ Android รักษาทรัพยากรเหล่านี้โดยไม่คำนึงถึงการลอกแบบความหนาแน่นและทำให้มั่นใจว่าแอพตัวเรียกใช้งานสามารถเลือกไอคอนที่มีความละเอียดที่ดีที่สุดสำหรับการแสดงผล

(จากhttp://developer.android.com/tools/projects/index.html#mipmap )


2
สิ่งนี้สอดคล้องกับตำแหน่งเริ่มต้นของ Android Studio เมื่อนำเข้าเนื้อหารูปภาพ ไอคอนตัวเรียกเข้าสู่ mipmap คนอื่นเข้าสู่ drawable
Edward Brey

2
เอกสารดูเหมือนว่าจะมีการเปลี่ยนแปลงอีกครั้งดูเหมือนว่า mipmap จะไม่มีอยู่ในdeveloper.android.com/tools/projects/index.html (แม้จะมีเอกสาร Android อื่น ๆ ที่ยังพยายามอ้างอิงอยู่)
SomeoneElse

28

รูปภาพ mipmap เหล่านี้แตกต่างจากรูปภาพอื่น ๆ ที่คุ้นเคยได้อย่างไร

นี่คือสองเซ็นต์ของฉันในการพยายามอธิบายความแตกต่าง มีสองกรณีที่คุณต้องจัดการเมื่อทำงานกับรูปภาพใน Android:

  1. คุณต้องการโหลดภาพสำหรับความหนาแน่นของอุปกรณ์ของคุณและคุณจะใช้มัน "ตามที่เป็น" โดยไม่มีการเปลี่ยนแปลงขนาดที่แท้จริงของมัน ในกรณีนี้คุณควรทำงานกับdrawableและ Android จะให้ภาพที่เหมาะสมที่สุด

  2. คุณต้องการโหลดภาพสำหรับความหนาแน่นของอุปกรณ์ของคุณ แต่ภาพนี้จะถูกปรับขนาดขึ้นหรือลง เช่นนี้เป็นสิ่งจำเป็นเมื่อคุณต้องการแสดงไอคอนตัวเปิดที่ใหญ่กว่าหรือคุณมีภาพเคลื่อนไหวซึ่งจะเป็นการเพิ่มขนาดของภาพ ในกรณีเช่นนี้เพื่อให้ได้ภาพที่มีคุณภาพดีที่สุดคุณควรใส่ภาพลงในโฟลเดอร์mipmap สิ่งที่ Android จะทำคือมันจะพยายามเลือกภาพจากที่เก็บข้อมูลที่มีความหนาแน่นสูงกว่าแทนที่จะขยายภาพ สิ่งนี้จะเพิ่มความคมชัด (คุณภาพ) ของภาพ

ดังนั้นกฎของหัวแม่มือในการตัดสินใจว่าจะนำภาพของคุณไปที่:

  • ไอคอนตัวเรียกใช้จะเข้าไปในโฟลเดอร์mipmapเสมอ
  • รูปภาพซึ่งมักจะถูกย่อขนาด (หรือลดขนาดลงมาก) และคุณภาพที่มีความสำคัญสำหรับแอปให้ไปที่โฟลเดอร์mipmapเช่นกัน
  • ภาพอื่น ๆ ทั้งหมดเป็นปกติภาพวาด

ดังนั้นไอคอนสำหรับแถบการกระทำหรือไอคอนสำหรับปุ่มลอยจึงเป็น mipmap?
Juan De la Cruz

ไม่พวกมันเป็นปกติ
sergej shafarenka

23

การติดตั้ง mipmaps ใน Android เป็นเทคนิคตรงจากปี 1983 ที่อธิบายไว้ในบทความ Wikipedia :)

แต่ละภาพบิตแมปของชุด mipmap ซ้ำซ้อนของพื้นผิวหลัก แต่ในระดับรายละเอียดลดลง แม้ว่าพื้นผิวหลักจะยังคงถูกใช้เมื่อมุมมองนั้นเพียงพอที่จะเรนเดอร์แบบละเอียด แต่ตัวเรนเดอร์จะสลับไปเป็นอิมเมจ mipmap (... ) ที่เหมาะสมเมื่อดูพื้นผิวจากระยะทางหรือขนาดเล็ก

แม้ว่านี่จะอธิบายได้ว่าเป็นเทคนิคสำหรับกราฟิก 3 มิติ (ตามที่กล่าวถึง "การดูจากระยะไกล") แต่ก็ใช้กับ 2D ได้เช่นกัน (แปลว่า "วาดเป็นพื้นที่เล็ก ๆ " เช่น "ลดขนาด")

สำหรับตัวอย่างที่เป็นรูปธรรมของ Android ลองจินตนาการว่าคุณมีมุมมองที่มีพื้นหลังที่สามารถวาดได้ (โดยเฉพาะกBitmapDrawable) ตอนนี้คุณใช้ภาพเคลื่อนไหวเพื่อปรับขนาดเป็น 0.15 ของขนาดดั้งเดิม โดยปกติสิ่งนี้จะต้องมีการลดขนาดบิตแมปพื้นหลังสำหรับแต่ละเฟรม อย่างไรก็ตามการลดสเกลสูงสุดนี้อาจทำให้เกิดสิ่งประดิษฐ์ที่มองเห็นได้

อย่างไรก็ตามคุณสามารถระบุ mipmap ซึ่งหมายความว่าภาพนั้นมีการแสดงผลล่วงหน้าสำหรับเครื่องชั่งบางรุ่น (สมมติว่า 1.0, 0.5 และ 0.25) เมื่อใดก็ตามที่ภาพเคลื่อนไหว "ข้าม" ขีด จำกัด 0.5 แทนที่จะเป็นการลดขนาดภาพต้นฉบับขนาด 1.0 เท่าไปเรื่อย ๆ จะเปลี่ยนเป็นภาพ 0.5 และลดระดับลงซึ่งควรให้ผลลัพธ์ที่ดีกว่า และอื่น ๆ เมื่อแอนิเมชั่นดำเนินต่อไป

นี่เป็นทฤษฎีเล็กน้อยเพราะผู้สร้างมันทำจริง ตามแหล่งที่มาของคลาสบิตแมปมันเป็นเพียงคำใบ้และตัวแสดงผลอาจหรือไม่ให้เกียรติก็ได้

/**
 * Set a hint for the renderer responsible for drawing this bitmap
 * indicating that it should attempt to use mipmaps when this bitmap
 * is drawn scaled down.
 *
 * If you know that you are going to draw this bitmap at less than
 * 50% of its original size, you may be able to obtain a higher
 * quality by turning this property on.
 * 
 * Note that if the renderer respects this hint it might have to
 * allocate extra memory to hold the mipmap levels for this bitmap.
 *
 * This property is only a suggestion that can be ignored by the
 * renderer. It is not guaranteed to have any effect.
 *
 * @param hasMipMap indicates whether the renderer should attempt
 *                  to use mipmaps
 *
 * @see #hasMipMap()
 */
public final void setHasMipMap(boolean hasMipMap) {
    nativeSetHasMipMap(mNativeBitmap, hasMipMap);
}

ฉันไม่แน่ใจว่าทำไมสิ่งนี้จึงเหมาะเป็นพิเศษสำหรับไอคอนแอปพลิเคชัน แม้ว่า Android บนแท็บเล็ตรวมถึงปืนกลบางตัว (เช่น GEL) ขอให้ไอคอน "ความหนาแน่นสูงขึ้น" เพื่อแสดงให้ใหญ่ขึ้น แต่ควรทำโดยใช้กลไกปกติ (เช่นdrawable-xxxhdpi& & c)


สิ่งนี้ไม่ได้อธิบายความแตกต่างจากdrawableโฟลเดอร์ที่มีภาพที่แม็พ
Timmmm

2
ในความเป็นจริงคำตอบนี้ผิดธรรมดา ความแตกต่างเพียงอย่างเดียวคือไฟล์ถูกแยกออกหรือไม่ - มันไม่มีส่วนเกี่ยวข้องกับการใช้การทำแผนที่หรือไม่ (ในทั้งสองกรณี) โฟลเดอร์นั้นมีชื่อไม่ดี พวกเขาน่าจะเรียกมันว่าdrawable-nostripอะไรซักอย่าง
Timmmm

2
คำอธิบายที่ดีของ mipmaps แต่คำตอบของKazuaki ที่อ้างถึงรายการเอกสารของ Google ดูเหมือนจะบอกเป็นนัยว่าไม่ใช่เหตุผล
Trilarion

11

สิ่งหนึ่งที่ฉันพูดถึงในเธรดอื่นที่ควรค่าแก่การชี้แนะ - หากคุณกำลังสร้างแอพที่แตกต่างกันสำหรับความหนาแน่นต่างกันคุณควรรู้เกี่ยวกับไดเรกทอรีทรัพยากร "mipmap" นี่เป็นเหมือนแหล่งข้อมูล "drawable" ยกเว้นว่าจะไม่มีส่วนร่วมในการดึงข้อมูลความหนาแน่นเมื่อสร้างเป้าหมาย apk ที่แตกต่างกัน

https://plus.google.com/105051985738280261832/posts/QTA9McYan1L


... ใช่แน่นอนตามที่เควินระบุไว้ในคำตอบที่ยอมรับ นี่ดูเหมือนจะเป็นเหตุผลหลักที่อยู่เบื้องหลัง
Richard Le Mesurier

@RichardLeMesurier ใช่เพียงเพื่อทำให้สั้นและชัดเจน
kreker

4

เนื่องจากฉันกำลังมองหาคำตอบที่ชัดเจนเกี่ยวกับเรื่องนี้เพื่อกำหนดประเภทที่เหมาะสมสำหรับไอคอนการแจ้งเตือนฉันต้องการเพิ่มคำสั่งที่ชัดเจนนี้ในหัวข้อ มาจากhttp://developer.android.com/tools/help/image-asset-studio.html#saving

หมายเหตุ: ไฟล์ไอคอนตัวเรียกใช้อยู่ในตำแหน่งที่แตกต่างจากของไอคอนอื่น ๆ พวกเขาอยู่ใน mipmap / โฟลเดอร์ ไฟล์ไอคอนอื่น ๆ ทั้งหมดอยู่ใน drawable / โฟลเดอร์ของโครงการของคุณ


2

เมื่อสร้าง apks แยกต่างหากสำหรับความหนาแน่นที่แตกต่างกันโฟลเดอร์ drawable สำหรับความหนาแน่นอื่น ๆ จะถูกปล้น สิ่งนี้จะทำให้ไอคอนเบลอในอุปกรณ์ที่ใช้ไอคอนตัวเรียกใช้ที่มีความหนาแน่นสูงกว่า เนื่องจากโฟลเดอร์ mipmap ไม่ถูกปล้นจึงควรใช้เพื่อรวมถึงไอคอนตัวเรียกใช้


2

มีสองกรณีที่คุณต้องจัดการเมื่อทำงานกับรูปภาพใน Android:

  1. คุณต้องการโหลดรูปภาพสำหรับความหนาแน่นของอุปกรณ์และคุณจะใช้มัน“ ตามสภาพ” โดยไม่ต้องเปลี่ยนขนาดจริง ในกรณีนี้คุณควรทำงานกับ drawable และ Android จะให้ภาพที่เหมาะสมที่สุด
  2. คุณต้องการโหลดภาพสำหรับความหนาแน่นอุปกรณ์ของคุณ แต่ภาพนี้จะถูกปรับขนาดขึ้นหรือลง เช่นนี้เป็นสิ่งจำเป็นเมื่อคุณต้องการแสดงไอคอนตัวเปิดที่ใหญ่กว่าหรือคุณมีภาพเคลื่อนไหวซึ่งจะเพิ่มขนาดของภาพ ในกรณีเช่นนี้เพื่อให้ได้ภาพที่มีคุณภาพดีที่สุดคุณควรใส่ภาพลงในโฟลเดอร์ mipmap สิ่งที่ Android จะทำคือมันจะพยายามเลือกภาพจากถังที่มีความหนาแน่นสูงกว่าแทนที่จะขยายภาพ

ดังนั้น

ดังนั้นกฎของหัวแม่มือในการตัดสินใจว่าจะนำภาพของคุณไปที่:

  1. ไอคอนตัวเรียกใช้จะเข้าไปในโฟลเดอร์ mipmap เสมอ

  2. รูปภาพซึ่งมักจะถูกย่อขนาด (หรือลดขนาดลงมาก) และคุณภาพที่มีความสำคัญสำหรับแอปให้ไปที่โฟลเดอร์ mipmap เช่นกัน

  3. รูปภาพอื่น ๆ ทั้งหมดเป็น drawable ปกติ

อ้างอิงจากนี้บทความ


1
res/
mipmap-mdpi/ic_launcher.png (48x48 pixels)
mipmap-hdpi/ic_launcher.png (72x72)
mipmap-xhdpi/ic_launcher.png (96x96)
mipmap-xxhdpi/ic_launcher.png (144x144)
mipmap-xxxhdpi/ic_launcher.png (192x192)

MipMap สำหรับไอคอนแอปสำหรับตัวเรียกใช้

http://android-developers.blogspot.co.uk/2014/10/getting-your-apps-ready-for-nexus-6-and.html

https://androidbycode.wordpress.com/2015/02/14/goodbye-launcher-drawables-hello-mipmaps/


ขอบคุณสำหรับการโพสต์บล็อกที่สอง! มันอธิบายความแตกต่างระหว่างการใช้งานdrawable-XXXและmipmap-XXXโฟลเดอร์ได้ดีจริงๆ: ไอคอนตัวเรียกใช้งานนั้นแตกต่างจากแหล่งข้อมูลอื่น ๆ เนื่องจากเป็นไปได้ที่ไอคอนความละเอียดสูงจะแสดงในตัวเรียกใช้งานผู้ใช้ หากภาพความละเอียดสูงนั้นถูกดึงออกมาจากโฟลเดอร์ drawables ของคุณไอคอนความหนาแน่นต่ำกว่าจะถูกปรับขนาดโดยทางโปรแกรม นี่อาจทำให้ไอคอนเบลอไม่สวย
winklerrr

อย่างน้อยใน Android 8.1 บนไอคอนเปิดตัว Nexus P6 ในโฟลเดอร์ drawable จะไม่ถูกปรับขนาด จริง ๆ แล้วไม่พบเลยและแอปขัดข้องเมื่อเปิด
matthew

1

หากคุณสร้าง APK สำหรับการแก้ปัญหาหน้าจอเป้าหมายเช่น HDPI เครื่องมือการทำแพ็กเกจสินทรัพย์ Android AAPT สามารถดึงออกมาสำหรับความละเอียดอื่น ๆ ที่คุณไม่ต้องการ แต่ถ้ามันอยู่ในโฟลเดอร์ mipmap แล้วสินทรัพย์เหล่านี้จะอยู่ใน APK โดยไม่คำนึงถึงความละเอียดเป้าหมาย


-1

ความเข้าใจที่ฉันมีเกี่ยวกับ mipmap นั้นมากหรือน้อยเช่นนี้

เมื่อต้องการวาดภาพเนื่องจากเรามีขนาดหน้าจอที่แตกต่างกันคือความละเอียดการปรับขนาดบางอย่างจะต้องมีส่วนร่วม

หากคุณมีภาพที่ใช้ได้สำหรับโทรศัพท์มือถือระดับต่ำเมื่อคุณปรับขนาดให้เป็นแท็บเล็ตขนาด 10 นิ้วคุณต้อง "ประดิษฐ์" พิกเซลที่ไม่มีอยู่จริงซึ่งทำได้ด้วยอัลกอริธึมการแก้ไขบางอย่าง จำนวนพิกเซลที่ต้องประดิษฐ์เพิ่มขึ้นกระบวนการจะใช้เวลานานขึ้นและคุณภาพจะเริ่มล้มเหลวคุณภาพที่ดีที่สุดนั้นได้มาจากอัลกอริธึมที่ซับซ้อนมากขึ้นซึ่งใช้เวลานานกว่า

ในการลดจำนวนพิกเซลที่ต้องประดิษฐ์ด้วย mipmap คุณจะต้องระบุขนาด / rsolutions ของภาพเดียวกันและระบบจะเลือกรูปภาพที่ใกล้เคียงที่สุดกับความละเอียดที่ต้องแสดงผลและทำการปรับขนาดจากที่นั่น สิ่งนี้ควรลดจำนวนการประหยัดทรัพยากรพิกเซลที่ประดิษฐ์เพื่อใช้ในการคำนวณพิกเซลเหล่านี้เพื่อให้ได้ภาพที่มีคุณภาพดี

ฉันอ่านเกี่ยวกับเรื่องนี้ในบทความอธิบายปัญหาประสิทธิภาพการทำงานใน libgdx เมื่อปรับขนาดภาพ:

http://www.badlogicgames.com/wordpress/?p=1403

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