วิธีรวมธีมสีเข้มในแอพ 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 ของคุณ