คุณสามารถใช้ Runtime Resource Overlays (RRO) เพื่อเปลี่ยนแบบอักษรได้แล้ว ด้วยการเพิ่มฟอนต์แบบกำหนดเองเพื่อสร้างแพ็คเกจฟอนต์ คุณสามารถใช้ฟอนต์ในธีมและใช้ RRO เพื่อใช้การปรับแต่งเองได้
ทำงานเหล่านี้ให้เสร็จสิ้น:
โครงสร้างไฟล์ตัวอย่างและไฟล์ตัวอย่างมีอยู่ใน custom-fonts.zip ดาวน์โหลดแล้วแตกไฟล์นี้ในเครื่องเพื่อใช้งานของคุณเอง
ทำแพ็คเกจฟอนต์
ในการสร้างแพ็คเกจแบบอักษร:
- เพิ่มไฟล์ฟอนต์
ttf
ทั้งหมดไปยังแพ็คเกจฟอนต์ในพาร์ติชั่นvendor
ตัวอย่างเช่น:vendor/[oem]/fonts/[oem]-sans/
- สร้างไฟล์
Android.mk
สำหรับแพ็คเกจฟอนต์ ตัวอย่างเช่น:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- ตรวจสอบให้แน่ใจว่าโมดูลจะถูกติดตั้งในพาร์ติชั่น
product
ในโฟลเดอร์etc
ในการดำเนินการดังกล่าว ให้ยืนยันว่าโมดูลมีแฟล็กต่อไปนี้:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
โค้ดตัวอย่างที่ให้ไว้ด้านบนแสดงให้เห็นถึงคำจำกัดความที่สมบูรณ์ของโมดูลแพ็คเกจฟอนต์
- สร้างไฟล์ชื่อ
fonts.mk
สำหรับแพ็คเกจฟอนต์ จากนั้นเพิ่มไฟล์ฟอนต์ttf
ไปที่PRODUCT_PACKAGES
ตัวอย่างเช่น:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
ตัวอย่างเช่น:
PRODUCT_PACKAGES := \ [font name].ttf \
สร้างแพ็คเกจโอเวอร์เลย์อุปกรณ์
- สร้างโมดูลชื่อ
fonts_customization.xml
เพื่อเพิ่มลงในบิลด์ โมดูลนี้ชี้ไปที่ไฟล์fonts_customization.xml
ที่มีตระกูลฟอนต์ และเรียกไฟล์ make ของแพ็กเกจฟอนต์ทั้งหมด ตัวอย่างเช่น:vendor/[oem]/[device]_overlay/fonts/Android.mk
- สร้างตระกูลแบบอักษร:
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
ระดับรากของไฟล์ต้องเป็นแท็ก
fonts-modification
เพิ่มตระกูลแบบอักษรสำหรับแต่ละแพ็คเกจแบบอักษรภายใต้องค์ประกอบนี้ นอกจากนี้ เพิ่มcustomizationType="new-named-family"
ให้กับฟอนต์ทุกตระกูล และตรวจสอบให้แน่ใจว่าแต่ละฟอนต์มีแอตทริบิวต์name
ชื่อนี้ถูกใช้ในภายหลังเพื่อเข้าถึงตระกูลฟอนต์ ต้องเพิ่มไฟล์นี้ในโมดูลfonts_customizations.xml
ที่กำหนดไว้ก่อนหน้านี้ในAndroid.mk
ตัวอย่างที่ให้ไว้ด้านบนมีไฟล์
fonts_customization.xml
ที่ถูกต้อง - สร้าง
fonts.mk
ตัวอย่างเช่น:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- เพิ่ม
fonts_customization.xml
ภายใต้แฟล็กPRODUCT_PACKAGES
- เรียกแต่ละแพ็คเกจฟอนต์ที่สร้างไว้ก่อนหน้านี้
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- เพิ่มโมดูลแบบอักษรให้กับบิลด์ภายใต้
PRODUCT_PACKAGES
แล้วสร้างใหม่ ฟอนต์จะถูกติดตั้งในระบบ - ตรวจสอบว่าไฟล์ฟอนต์
ttf
อยู่ในโฟลเดอร์/product/fonts
บนอุปกรณ์ - ตรวจสอบว่า
fonts_customization.xml
อยู่ใน/product/etc/
บนอุปกรณ์
ใช้ตระกูลฟอนต์ระบบใหม่
ในการใช้ตระกูลฟอนต์ระบบใหม่:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>