15 May 2019

[Android Code] รู้จักกับ ViewPager2 ที่จะมาแทน ViewPager แบบเดิมๆ



        หลังจากที่ ViewPager ถูกใช้งานมาอย่างยาวนานพร้อมกับข้อจำกัดบางอย่างที่ไม่สามารถทำได้ ในตอนนี้ทีมแอนดรอยด์ก็ได้สร้าง ViewPager2 ขึ้นมาเพื่อใช้แทน ViewPager ตัวเก่าแล้ว

11 May 2019

[Android Code] จะใช้ ViewModel หรือ AndroidViewModel ดี?



        ผู้ที่หลงเข้ามาอ่านหลายๆคนคงคุ้นเคยกับ ViewModel ใน Android Architecture Component กันมาพอสมควรแล้ว ซึ่งจะมีทั้งคลาส ViewModel และ AndroidViewModel ให้เรียกใช้งาน

        อ้าว!? แล้วมันต่างกันยังไงล่ะ?

08 April 2019

[Android Code] มาเปลี่ยน Dependency Injection ให้เป็นเรื่องง่ายด้วย Koin กันดูมั้ย?



        ถ้าพูดถึง Dependency Injection บนแอนดรอยด์ก็จะนึกถึง Dagger 2 เป็นอย่างแรก เพราะว่าเป็น Dependency Injection Framework ตัวแรกๆที่ออกมาใช้กัน

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

20 March 2019

[Android Dev Tips] บทย่อของการเปลี่ยนแปลงใน Android แต่ละเวอร์ชัน [Feature & API]



        เคยสงสัยกันบ้างมั้ยว่าบนแอนดรอยด์แต่ละเวอร์ชันเนี่ยมีอะไรเปลี่ยนแปลงไปบ้าง และมีอะไรที่นักพัฒนาจะต้องสนใจกันบ้าง เพราะถึงแม้ว่าล่าสุดแอนดรอยด์จะเปิดตัว Android Q กันแล้ว แต่ทว่าแอปส่วนใหญ่ก็ยังต้องรองรับกับเวอร์ชันเก่าๆอยู่ดี นั่นหมายความว่านักพัฒนาก็จะต้องรู้ว่าในแอนดรอยด์แต่ละเวอร์ชันมีการเปลี่ยนแปลงอะไรบ้าง เพื่อที่ว่าจะได้เรียกใช้คำสั่งและรับมือกับความหลากหลายของเวอร์ชันได้ถูกต้อง

08 February 2019

[Android Dev Tips] เดี๋ยวนี้ Google Play Console เค้ามี Internal Test ให้แล้วนะ



        ในการทดสอบแอปนั้น ถ้าผู้ที่หลงเข้ามาอ่านเป็นนักพัฒนาอิสระที่สร้างแอปขึ้นมาด้วยตัวเอง การนั่งทดสอบแอปของตัวเองก็คงไม่ใช่เรื่องยากอะไร ก็แค่ Build APK เพื่อติดตั้งลงในเครื่องแล้วเริ่มทดสอบ แต่ทว่าโลกในการพัฒนาแอปขนาดใหญ่ๆนั้นเลี่ยงไม่ได้ที่จะต้องมีทีม และผู้ที่หลงเข้ามาอ่านก็จะกลายเป็นคนที่พัฒนาแอปเป็นหลัก และการทดสอบแอปส่วนใหญ่ก็จะตกอยู่ที่ Tester ภายในทีมนั่นเอง 

24 January 2019

[Android Design] รับมือกับปัญหาชวนปวดหัวกับขนาดของตัวอักษรเมื่อต้องเจอกับฟอนต์ที่หลากหลาย



        ถ้าพูดถึงเรื่องฟอนต์บนแอนดรอยด์ ผู้ที่หลงเข้ามาอ่านก็คงนึกถึง Roboto เนอะ เพราะมันเป็นฟอนต์ที่ใช้บน Android 5.0 Lollipop เป็นต้นมา ถ้าทำแอปส่วนตัวก็คงไม่ต้องสนใจอะไรมาก แล้วใช้ฟอนต์ Roboto เนี่ยแหละ แต่ทว่าในโลกของการพัฒนาแอปนั้นบอกได้เลยว่า แค่เพียงฟอนต์เดียวก็อาจจะไม่เพียงพอเสมอไป

30 December 2018

[Android Code] เปลี่ยน Launch Screen ให้ดูดีกว่าที่เคยเป็นด้วยเทคนิคง่ายๆกันเถอะ



        หน้าแรกของแอปฯหรือที่เรียกกันว่า Launch Screen นั้น ก็เหมือน First Impression ของผู้ใช้ที่นักพัฒนาแอนดรอยด์ต้องใส่ใจ ซึ่งแต่ละแอปฯจะมีหน้าแรกแตกต่างกันออกไป บ้างก็จะเป็น Splash Screen ก่อน บ้างก็เปิดหน้า Sign In ขึ้นมาเลย

         ซึ่งบนแอนดรอยด์ก็มีเทคนิคเล็กๆน้อยๆที่ช่วยสร้าง Launch Screen ให้มี First Impression ที่ดีกว่าเดิมอยู่ด้วยนะ

20 November 2018

[Android Code] จัดการ Fragment Back​ Stack อย่างไรให้เหมาะสม


        เดี๋ยวนี้ Fragment ถือว่าเป็นเรื่องปกติที่นักพัฒนาแอนดรอยด์จะต้องเรียนรู้และใช้งานกัน เพราะว่า Activity เพียงอย่างเดียวไม่ได้ตอบโจทย์ความสามารถบางอย่างได้ ดังนั้น Fragment จึงถูกสร้างขึ้นมาเพื่อชดเชยความสามารถที่ขาดไปใน Activity นั่นเอง แต่ทว่า Fragment ก็มาพร้อมกับการทำงานที่ซับซ้อนมากขึ้นรวมไปถึง Back Stack ด้วยเช่นกัน

16 October 2018

[Android Code] Dagger 2 in Android [Part 4] - ทำ Dependency Injection ให้กับ Android Framework Component ต่างๆ



        หลังจากที่ได้อ่านบทความก่อนหน้านี้ไปแล้วก็จะสามารถทำ Dependency Injection ให้กับ Activity และ Fragment ด้วย Dagger 2 ได้แล้ว แต่ทว่า Component ของ Android Framework นั้นไม่ได้มีแค่ Activity และ Fragment เท่านั้น ดังนั้นในบทความนี้เจ้าของบล็อกจึงขอพูดถึง Component ตัวอื่นๆไว้ซักหน่อยดีกว่า

[Android Code] Dagger 2 in Android [Part 3] - ทำ Dependency Injection ให้กับ Activity และ Fragment



        จากบทความในตอนที่แล้ว เจ้าของบล็อกได้เตรียมโปรเจคให้พร้อมสำหรับการใช้งาน Dagger 2 และมีคำสั่งบางส่วนไปแล้ว โดยคลาส UserPreference และ AwesomeManager ก็พร้อมสำหรับการใช้งานผ่าน Dagger 2 เป็นที่เรียบร้อยแล้ว แต่ทว่ามันยังไม่จบ เพราะว่าในบทความนี้จะมาต่อด้วย Activity และ Fragment กันนะ

15 October 2018

[Android Code] ส่งข้อมูลระหว่าง Activity/Fragment แบบหล่อๆด้วย LiveData และ ViewModel ของ Android Architecture Components



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

24 July 2018

[Android Code] เมื่อทำ Google Maps แล้วอยากจะเช็คว่าพิกัดนั้นๆอยู่ในพื้นที่ที่กำหนดไว้หรือป่าว?


        เรื่องมีอยู๋ว่าเจ้าของบล็อกต้องการจะเช็คว่า LatLng ที่ได้จาก Google Maps เนี่ย มันอยู่ใน Area ที่เจ้าของบล็อกต้องการหรือป่าว ก็เลยเป็นที่มาของบทความนี้นั่นเอง

19 July 2018

[Android Code] Dagger 2 in Android [Part 2] - มาเตรียมโปรเจคสำหรับ Dagger กัน



        หลังจากที่เกริ่นเรื่อง Dagger ไปคร่าวๆแล้วในบทความก่อนหน้านี้ คราวนี้ก็ไม่ขอพูดพร่ำทำเพลง มาเริ่มเขียนโค้ดสำหรับ Dagger กันต่อเลยดีกว่า

16 July 2018

[Android Code] Dagger 2 in Android [Part 1] - Dependency Injection แบบหล่อๆด้วย Dagger 2



        ในที่สุดก็ถึงเวลาเขียนบทความของ Dagger 2 เสียที เพราะนี่คือหนึ่งใน Library ยอดนิยมที่ใช้กันในโปรเจคใหญ่ๆที่มีความซับซ้อนที่มีอะไรข้างในมากกว่าโค้ดแบบ MVC ธรรมดาๆ

06 July 2018

[Android Dev Tips] Jetifier เบื้องหลังการทำงานของ Android Gradle Plugin สุดเทพสำหรับ AndroidX



        ณ เวลานี้ผู้ที่หลงเข้ามาอ่านหลายๆคนก็คงรู้จักกับ AndroidX จากงาน Google I/O 2018 กันแล้วเนอะ ซึ่งเป็นการ Refactor เหล่า Package Name ของ Android Support Library ทั้งหมดให้มีชื่อที่ดู Make Sense มากขึ้น

        แต่หารู้กันหรือไม่ว่านอกจาก AndroidX แล้ว ยังมี Gradle Plugin อีกตัวหนึ่งที่ชื่อว่า Jetifier ที่ช่วยทำให้การย้ายไปใช้ AndroidX ของเราย้ายได้สมบูรณ์มากขึ้นอย่างกับใช้เวทมนต์อยู่นะ