วิธีรวมธีมสีเข้มในแอพ Android ของคุณ

สำหรับนักพัฒนาการสร้างแอพ Android นั้นเป็นกระบวนการที่ง่าย - การออกแบบ UI ที่น่าดึงดูดคือสิ่งที่ยากจริง ๆ นั่นเป็นเหตุผลที่เราเขียนคู่มือ“ วิธีการออกแบบ UI ของแอพ Android ที่ไม่ดูด” สำหรับนักพัฒนาที่ต้องการแรงบันดาลใจในการสร้าง UIs ที่เรียบง่าย แต่น่าดึงดูด ในคำแนะนำนั้นเราได้กล่าวถึงการเพิ่มชุดรูปแบบโหมดมืด / กลางคืนลงในแอพของคุณและในคู่มือนี้เราจะแนะนำคุณผ่านมัน

การเพิ่มชุดรูปแบบโหมดมืด / กลางคืนลงในแอปของคุณอาจเป็นตัวเลือกที่ยอดเยี่ยมสำหรับผู้ใช้ของคุณ - ช่วยประหยัดอายุการใช้งานแบตเตอรี่ พื้นหลังสีขาวบนตัวหนังสือสีดำหรือสีใด ๆ ที่ 'สว่าง' ใน UI ของคุณเป็นสิ่งที่สร้างความตึงเครียดให้กับสายตาโดยเฉพาะในเวลากลางคืน ดังนั้นพื้นหลังสีเข้มที่มีข้อความจางลงจึงทำให้เกิดความเครียดน้อยลงและเป็นอันตรายต่อสายตาซึ่งเป็นสาเหตุที่ทำให้แอพยอดนิยมจำนวนมากเริ่มมีธีมมืด - YouTube และ Reddit เมื่อไม่นานมานี้แม้ว่า Facebook ยังไม่ได้เผยแพร่พวกเขา อาจ.

หากคุณต้องการเพิ่มโหมดมืดสลับได้อย่างง่ายดายในแอพ Android ของคุณทำตามคำแนะนำในแอพและแสดงความคิดเห็นหากคุณพบปัญหาใด ๆ !

การสร้างคุณสมบัติ XML

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

ดังนั้นในโฟลเดอร์ 'ทรัพยากร' ของแอปให้สร้างไฟล์ชื่อ attrs.xml และเพิ่มบรรทัด เหล่านี้ ( เหล่านี้คือแอตทริบิวต์ที่มีสไตล์):

ก่อน Lollipop เราไม่สามารถระบุแอตทริบิวต์สำหรับ drawable ดังนั้นเราจึงต้องระบุ ID ทรัพยากรสำหรับ drawable - อย่างไรก็ตามนี่ไม่ใช่กรณีอีกต่อไป

การเพิ่มสไตล์

ในการทำให้งานนี้เราต้องสร้างสไตล์สองแบบแยกกันซึ่งจะแชร์ฐานเดียวกัน อย่างแรกคือชุดรูปแบบ 'แสง' หลักของคุณและชุดที่สองจะเป็นชุดรูปแบบ 'มืด' ของคุณ

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / รายการ> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

นี่คือสไตล์ที่แท้จริงสำหรับกิจกรรมที่กำหนด:

 # F4F4F6 # 33343B 

คุณต้องระบุหนึ่งในธีมเหล่านี้ลงในรายการสำหรับกิจกรรมของแอปซึ่งในกรณีนี้คือ FeedActivity

ทำให้มุมมอง

นี่คือตัวอย่างของการกำหนดมุมมองของคุณ - ในตัวอย่างนี้เป็นข้อผิดพลาดในการเปลี่ยนเส้นทาง“ ไม่พบหน้า”

วิธีเปิดใช้งานการสลับธีมแบบไดนามิก

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

 แอปคลาสสาธารณะขยายแอปพลิเคชัน {สาธารณะคงสุดท้าย String TAG = "แอพ"; บูลีนส่วนตัว isNightModeEnabled = false; @Override โมฆะสาธารณะ onCreate () {super.onCreate (); // เราโหลดสถานะโหมดกลางคืนที่นี่ SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (นี้); this.isNightModeEnabled = mPrefs.getBoolean (“ NIGHT_MODE”, เท็จ); } บูลีนสาธารณะ isNightModeEnabled () {return isNightModeEnabled; } โมฆะสาธารณะ setIsNightModeEnabled (บูลีน isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

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

 FeedActivity ระดับสุดท้ายสาธารณะขยาย AppCompatActivity {TAG สตริงคงสุดท้ายส่วนตัว = "FeedActivity"; @Override ที่ได้รับการป้องกันเป็นโมฆะ onCreate (บันเดิลที่บันทึกไว้InstanceState) {ถ้า (MyApplication.getInstance (). isNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (saveInstanceState); setContentView (R.layout.activity_feed); }} 

อย่างไรก็ตามถ้าคุณต้องการใช้ชุดรูปแบบที่แตกต่างจากที่ระบุไว้ในไฟล์รายการจะ ต้องทำก่อนที่จะ เรียกผู้ปกครอง onCreate () วิธีการ

การตั้งค่าสถานะโดยใช้ AppCompat

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

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

ที่นี่คุณสามารถใช้:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

การดึงรัฐ

 AppCompatDelegate.getDefaultNightMode (); FeedActivity ระดับสุดท้ายสาธารณะขยาย AppCompatActivity {TAG สตริงคงสุดท้ายส่วนตัว = "FeedActivity"; @Override ที่ได้รับการป้องกันเป็นโมฆะ onCreate (บันเดิลที่บันทึกไว้InstanceState) {ถ้า (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (saveInstanceState); setContentView (R.layout.activity_feed); }} 

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

บทความที่น่าสนใจ