[Dev] แสดงข้อมูล Open-source licenses บน Android App ง่าย ๆ ด้วย License Fragment Library

ในปัจจุบัน การพัฒนา App บน Android นั้น นิยมนำ Library ต่าง ๆ มาช่วยให้การพัฒนา App นั้นง่ายขึ้น ลดความยุ่งยาก ซับซ้อน ในแต่ละเรื่องเป็นอย่างดี เพราะผู้พัฒนา Library นั้นได้จัดการไว้ให้หมดแล้ว และยิ่งบน Android Studio ด้วยแล้ว มีระบบ Dependency ที่ทำให้เรานำ Library ต่าง ๆ มาใช้งานได้ง่ายมาก

Android-Developer-logo_License-Fragment-Library

แต่ Library ส่วนใหญ่นั้น มักจะติด License หรือสัญญาอนุญาตประเภทต่าง ๆ ไว้ ไม่ว่าจะเป็น Apache, MIT, GPL, BSD หรืออื่น ๆ ซึ่งแทบจะทุกประเภทสัญญา มีข้อกำหนดว่า ต้องแสดงข้อสัญญาลงในส่วนใดส่วนหนึ่งของงานด้วย การจะนำ Library ต่าง ๆ มาใช้งานนั้น จึงควรที่จะทำให้ถูกต้องซะ จะได้ไม่เกิดปัญหา หรือถูกฟ้องร้องได้ในภายหลัง

รายละเอียดเบื้องต้นของ License ประเภทต่าง ๆ ลองอ่านบทความแนะนำ ที่ Link ท้ายบทความ

สำหรับบทความนี้ ขอแนะนำ Library ที่มีชื่อว่า License Fragement ซึ่งผมเป็นผู้พัฒนาขึ้นมาเอง เพื่อช่วยสร้างหน้าจอแสดงผลข้อมูล Open-source licenses ได้แบบง่าย ๆ นั่นเอง

 

List of contents

 

App Example

ก่อนอื่น… มาดูตัวอย่างกันก่อนว่า App ต่าง ๆ นั้น เขาแสดงผลข้อมูล Open-source licenses อย่างไรบ้าง!?

รูปด้านล่าง มาจาก App Google Play Store ซึ่งได้ใส่ข้อมูล Open-source licenses ไว้ในเมนู Settings > About > Open-source licenses

Open-source licenses บน Google Play Store app
Open-source licenses บน Google Play Store app

ส่วนรูปนี้ มาจาก App YouTube ซึ่งก็ได้ใส่ข้อมูล Open-source licenses ไว้ที่เมนู About > Open-source licenses

Open-source licenses บน YouTube app
Open-source licenses บน YouTube app

อีกสักตัวอย่างนึง เป็น App Facebook ก็ได้ใส่ข้อมูล Open-source licenses ไว้ที่หน้า About > licenses

Open-source licenses บน Facebook app
Open-source licenses บน Facebook app

เห็นไม๊ครับ App ใหญ่ ๆ ดัง ๆ เค้าก็ทำให้ดูเป็นตัวอย่างหมดแล้ว โดย UI ที่เห็น ก็เรียบ ๆ ไม่เน้นสวยงามสักเท่าไหร่ ดูอย่างของ Google Play Store ยังแสดงผลบน Dialog แต่ข้อมูลล้นไปด้านข้างซะอย่างงั้น

 

What’s License Fragment Library

License Fragment คือ Android Library ที่ช่วยสร้างหน้าจอแสดงผลข้อมูล Open-source licenses ได้แบบง่าย ๆ โดยจะสร้างออกมาในรูปแบบของชิ้นส่วนหน้าจอ ที่เรารู้จักกันในชื่อว่า Fragment

โดยที่ License Fragment นั้น พัฒนาต่อยอดจาก Fragment ใน Support Library v4 เพื่อให้สามารถใช้งานกับ Android เวอร์ชั่นเก่า ๆ ได้ และ RecyclerView Library v7 ในส่วนของคลาส RecyclerViewLicenseFragment

 

License Fragment Goals

เป้าหมายของ License Fragment ที่ตั้งไว้ นั้นมีดังนี้

  • สร้าง Fragment สำหรับแสดงข้อมูล Open-source licenses ได้ง่าย ๆ ด้วยชุดคำสั่งเพียง 1 บรรทัด
  • รองรับการใช้งานด้วย Tag <fragment>
  • แสดงข้อมูล License ของ Library ที่เกี่ยวข้องให้โดยอัตโนมัติ สามารถเปิด/ปิดความสามารถนี้ได้ (ตัวอย่าง – ถ้ากำหนดให้แสดงข้อมูลจาก Library Otto ก็จะแสดงข้อมูล Library OkHttp ให้อัตโนมัติ)
  • มีหน้าจอพื้นฐานให้เลือก 3 ประเภท (ScrollViewLicenseFragment, ListViewLicenseFragment และ RecyclerViewLicenseFragment)
  • สามารถเพิ่มข้อมูล License เองได้
  • ปรับแต่งหน้าตาของหน้าจอได้

 

Build-in License Support

ภายใน License Fragment จะมีข้อมูลเบื้องต้นมาให้แล้ว ดังนี้

1. ประเภท License

  • Apache License 2.0
  • BSD 3-Clause
  • BSD 2-Clause
  • GPL-3.0
  • MIT license

อ้างอิง – http://opensource.org/licenses

2. Library ยอดนิยม

 

How to use License Fragment

1. Installation

การใช้งาน License Fragment Library ใน Android Project สามารถเพิ่ม Dependency ใน build.gradle ได้ ดังนี้

  • Gradle

  • Maven

 

2. Create License Fragment

2.1 สร้าง License Fragment จาก java code

ตัวอย่างข้อมูล

สร้าง License Fragment

2.2 สร้าง License Fragment จาก xml layout

ประกาศ Namespace whatever (อะไรก็ได้) ใน root view ของ Layout

เพิ่ม Tag <fragment> และกำหนดข้อมูล License ด้วยการกำหนด Attribute whatever:lfLicenseID

Optional – เปิด/ปิด ความสามารถการแสดงผล Library ที่เกี่ยวข้อง โดยกำหนด Attribute whatever:lfLicenseChain

Optional – ปรับแต่งหน้าตาของหน้าจอ โดยกำหนด Attribute whatever:lfTitleBackgroundColor, whatever:lfTitleTextColor, whatever:lfLicenseBackgroundColor และ whatever:lfLicenseTextColor

 

3. Customize

หลังจากสร้าง License Fragment แล้ว สามารถปรับแต่งได้อีก ดังนี้

  • เปิด/ปิด ความสามารถการแสดงผล Library ที่เกี่ยวข้อง

  • เพิ่มข้อมูล License อื่น ๆ

  • ปรับแต่งหน้าตาของหน้าจอ

 

Screenshot

รูปต่อไปนี้ แสดง License Fragment เมื่อนำไปวางบน Container แล้ว

LicenseFragment Screenshot
LicenseFragment Screenshot

 

Contributor

สำหรับนักพัฒนาที่อยากร่วมพัฒนา License Fragment Library สามารถ Fork จาก GitHub ได้เลย โดยจุดที่อยากให้นักพัฒนาช่วยเพิ่ม มีดังนี้

  1. ข้อมูลประเภท License อื่น ๆ – โดยการเพิ่มไฟล์ในโฟลเดอร์ raw และเรียกใช้งานที่ไฟล์ ResourceManager.java
  2. ข้อมูล Library ยอดนิยม – ตรวจสอบได้จาก TODO
  3. หน้าจอแบบใหม่ ๆ – โดยการสร้าง Fragment ที่ Extend จากคลาส LicenseFragmentBase และ Layout ใหม่ ๆ
  4. อื่น ๆ – ตามแต่ท่าน ๆ จะคิดได้เลย

เมื่อพัฒนาเสร็จแล้ว ก็ Pull Request มาได้เลยนะ ถ้าตรงไหนทำไม่เป็น ก็หลังไมค์มาถามได้นะครับ หรือจะขอความสามารถเพิ่มเติม ก็ได้นะครับ ว่างแล้วจะทำให้

 

พิเศษ!! สำหรับ App ไหน ที่นำ License Fragment Library ไปใช้งาน กระซิบบอกกันหน่อยนะ เด๋วช่วยโฆษณาให้

 

บทความแนะนำ – Open Source License เรื่องใกล้ตัวที่ไม่ควรมองข้าม

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.