มาลองเขียน Android Custom fonts ด้วย library กันเถอะ

ขอเสนอบทความแรกของผมเลยละกัน เนื่องด้วยช่วงนี้ medium กำลังฮิตในไทย ด้วยความที่ตัวเองไม่ค่อยรู้อะไรและค่อนข้างอ่อนเรื่อง Soft Skill เลยอยากลองเขียนสักบทความเพื่อเป็นการฝึกการเขียนไปในตัว(ดูดี) ซึ่งจริงๆ plan ไว้นานแล้วว่าจะเขียน blog แต่ด้วยสาเหตุแบบ งงๆ หลายอย่างเลยไม่ได้เขียนสักที อีกอย่างก็ติดทำโปรเจคจบด้วย ไหนๆ medium ก็มาละ ลองเขียนกันสักหนึ่งกระบวนท่า

โดยบทความอาจจะไม่ได้ลงในทุกๆขั้นตอนเล็กๆน้อยๆ อย่างเช่น สร้างโปรเจคยังไง? ผมจะไม่ขอพูดถึงตรงนั้นนะ เพราะมันยากไปนั่นเอง แต่ถ้าใครยังใช้ eclipse อยู่ (ห่ะอะไรนะ นายทำไมยังใช้มันอยู่?) ต้องเปลี่ยนมา Android Studio ได้แล้วครับ เพราะมันดีขึ้นเรื่อยๆ ดีวันดีคืนเลยละ

!!! เข้าเรื่องๆ

Step 1

ก่อนอื่นก็เริ่มสร้างโปรเจคขึ้นมาให้ แบบ Empty Activity มาก่อนเลยละกานนนหรือแบบอื่นๆก็ได้แล้วแต่ความลำบากของแต่ละคน

Step 2

แล้วก็เพิ่ม library เข้ามาในโปรเจคให้เรียบร้อย

compile 'uk.co.chrisjenx:calligraphy:2.1.0'
build.gradle

สมมุติว่าถ้าไม่ใช้ library ละ ทำไง? เราก็อาจจะต้องใช้คลาส Typeface ในการเซต font ทีละตัวๆ แต่เราจะไม่สอน แฮะๆ หรือถ้าใครมีวิธีอื่นๆก็บอกกันด้วยน่าาาา

!!!ต่อๆ

Step 3

ขั้นตอนมา คือเราต้องสร้าง folder assets ขึ้นมา ซึ่งปกติแล้ว Android Studio จะไม่ได้สร้างมาให้ในตอนเริ่มโปรเจคใหม่ เพราะฉะนั้นเราจึงต้องสร้างขึ้นมาเอง แล้วสร้าง folder fonts ภายใน assets อีกทีเพื่อเก็บ font ของเราครับ

Step 4

สร้างคลาส Java ขึ้นมา แล้วสืบทอดคลาส Application แล้วจากนั้น override method onCreate มาด้วย

Step 5

ต้องมีการ config อะไรเล็กน้อยว่าเราจะใช้ fonts อะไรเป็น default ด้วยวิธีที่แสนง่าย ซึ่งเราสามารถเปลี่ยนภายหลังได้ ไม่ต้องกังวลแต่อย่างใด ให้ทำดังเน่

Step 6

กระโดดมาที่ MainActivity.java แปบ แล้ว Override method attachBaseContext เพื่อให้ fonts ที่เราทำการเซตไว้ให้แสดงผลใน MainActivity ด้วยครับ ยังไง? จะใครละ แบบเน่

Step 7

อย่าลืม ใช้คาถาอันเชิญ คลาสที่เราสืบทอด application ที่ส้รางไว้ในตอนแรก มาใน AndroidManifest.xml ด้วย โดยจะเพิ่มภายใน tag application [android:name=?] เพราะว่าเราได้สร้าง class application ขึ้นมาใช้งานเอง ถ้าสร้างมาแล้วไม่เรียกใช้ จะสร้างมาทำไม?

เสร็จแล้วครับ จากนั้นลอง run ดูผลกันเลย

แค่นี้เอง ง่ายปะ?

  • ส่วนถ้าเราต้องการกำหนด fonts ใหม่ สามารถทำได้ภายในไฟล์ที่เราออกแบบ layout ครับ เช่น ผมจะกำหนด font ให้กับ TextView ใหม่ ก็ทำได้ง่ายแบบนี้ครับ
<TextView fontPath="fonts/MyFont.ttf"/>

ถ้าผิดพลาดประการใดต้องขอบอกว่า “เราขอโทษ”

เพิ่มเติม : https://github.com/chrisjenx/Calligraphy

ตัวอย่างที่ผมเคยเขียนไว้ครับ : https://github.com/WeRockStar/Custom-fonts-in-Android-with-Calligraphy