สารบัญบทความแอนดรอยด์
Android Code
- เลิกใส่ API Key ไว้ในโปรเจคแล้วเปลี่ยนมาใช้ Secrets Gradle Plugin กัน
- Composition Local ใน Jetpack Compose
- Pending Intent ตัวนี้ควรเป็น Mutable หรือ Immutable ดีนะ?
- สร้าง Gradle Plugin ด้วย Kotlin เพื่อใช้งานบน Android - การสร้าง Configuration Sharing Plugin เพื่อใช้งานใน Library Module
- สร้าง Gradle Plugin ด้วย Kotlin เพื่อใช้งานบน Android - การสร้าง Firebase Plugin เพื่อแยกคำสั่งของ Firebase ออกจาก App Module
- สร้าง Gradle Plugin ด้วย Kotlin เพื่อใช้งานบน Android - การสร้าง Dependency Sharing Plugin เพื่อใช้กับทุก Module
- สร้าง Gradle Plugin ด้วย Kotlin เพื่อใช้งานบน Android - Getting Started
- สร้าง Gradle Plugin ด้วย Kotlin เพื่อใช้งานบน Android - Android Gradle Plugin
- สร้าง Gradle Plugin ด้วย Kotlin เพื่อใช้งานบน Android - Introduction
- สร้าง UI ให้ได้ดั่งใจด้วย Shape ใน Jetpack Compose
- มาเปลี่ยน Gradle ของเราให้ใช้ Kotlin แทน Groovy กันดีกว่า - Migration
- สร้าง UI ด้วย Jetpack Compose อย่างมีประสิทธิภาพด้วย Slot API
- ว่าด้วยเรื่อง State Hoisting ใน Jetpack Compose
- Stateless & Stateful Composable ใน Jetpack Compose
- เลือกรูปจากในเครื่องง่าย ๆ ด้วย Visual Media Picker
- การเขียนไฟล์ลงใน Device Storage บนแอนดรอยด์
- มีแอปที่เปิดใช้งาน Accessibility อยู่หรือป่าวนะ?
- วิธีตรวจสอบที่มาของแอป (Installer Source)
- วิธีสร้าง Custom View ที่เปลี่ยนขนาดผ่านโค้ดได้
- การส่ง Test Double ด้วย Koin ในคลาส Application เพื่อทำ UI Test
- ทำไม Activity และ Fragment ถึงต้องเป็น Empty Constructor
- รวมคำสั่งใน Date/Time API ของ Java 8
- ส่งข้อมูลระหว่าง Activity/Fragment แบบง่าย ๆ ด้วย Fragment Result API
- การเรียกใช้งาน Activity ที่มีการส่งข้อมูลกลับด้วย Activity Result API
- ทำ Image Resize บนแอนดรอยด์อย่างไรให้มีประสิทธิภาพ
- วิธีแก้ปัญหา UI โดนบังเพราะ On-screen Keyboard
- ทำไมเราถึงไม่ควรเอา RecyclerVIew ใส่ไว้ข้างใน NestedScrollView
- สร้าง CountDownTimer แบบเท่ ๆ ด้วย LiveData
- การใช้งาน ConcatAdapter ใน RecyclerView ร่วมกับ LayoutManager หลายๆแบบ
- สร้าง Reuseable ViewModel ด้วย Interface Delegation เพื่อใช้กับ ViewModel ตัวอื่นๆ
- การ Save และ Restore UI State ที่อยู่ใน ViewModel
- มาทำลองเล่น Sensor API บนแอนดรอยด์กัน
- Google Maps SDK for Android v3 - ตอนที่ 3 เริ่มต้นใช้งาน
- Google Maps SDK for Android v3 - ตอนที่ 2 การสร้าง API Key
- Google Maps SDK for Android v3 - ตอนที่ 1 ทำความรู้จักกับ Maps SDK
- Interpolator สำหรับ Property Animation บน Android
- เตรียมตัวให้พร้อมกับ Package Visibility ที่เพิ่มเข้ามาใน Android 11
- วิธีการใช้งาน ViewBinding
- ว่าด้วยเรื่อง Copy ใน Data Class ของ Kotlin
- จัดการกับ State Changes ใน Custom View อย่างไรให้ครอบคลุม (รวมไปถึง Inherited Custom View)
- ทำเว็ปให้รองรับในแอปแอนดรอยด์แบบเท่ๆด้วย Trusted Web Activity
- Android App Bundle — ตอนที่ 2 สิ่งที่ควรรู้ในการใช้งาน Android App Bundle
- Android App Bundle — ตอนที่ 1 รู้จักความสามารถและเบื้องหลังในการทำงาน
- CameraX ตอนที่ 2 — ใช้งานแบบง่าย ๆ ด้วย PreviewView และ CameraController
- CameraX ตอนที่ 1 — รู้จัก CameraX กันแล้วหรือยัง?
- Notification in Android ตอนที่ 8 — อัปเดตข้อมูลให้กับ Notification
- Notification in Android ตอนที่ 7 — การแจ้งเตือนแบบ Heads-up notification
- Notification in Android ตอนที่ 6 — กำหนด Notification Style ในรูปแบบต่างๆ
- Notification in Android ตอนที่ 5 — Notification Channel
- Notification in Android ตอนที่ 4 — Notification Action
- Notification in Android ตอนที่ 3 — ทำให้ Notification สมบูรณ์ยิ่งขึ้น
- Notification in Android ตอนที่ 2 — คำสั่งพื้นฐานของ Notification
- Notification in Android ตอนที่ 1 — เรื่องพื้นฐานของ Notification ที่ควรรู้
- อยากจะเปิดหน้าแชทใน Facebook Messenger ผ่านแอปต้องทำยังไง?
- รู้จักกับคำสั่งสำหรับ Security ที่อยู่ใน AndroidX
- View Binding บนแอนดรอยด์ทำแบบไหนได้บ้างนะ?
- สร้าง Repository ใน MVVM บนแอนดรอยด์ให้เขียนเทสได้ง่ายกันเถอะ
- รู้จักกับ ViewPager2 ที่จะมาแทน ViewPager แบบเดิมๆ
- จะใช้ ViewModel หรือ AndroidViewModel ดี?
- มาเปลี่ยน Dependency Injection ให้เป็นเรื่องง่ายด้วย Koin กันดูมั้ย?
- จัดการ Fragment Back Stack อย่างไรให้เหมาะสม
- Dagger 2 in Android [Part 4] — ทำ Dependency Injection ให้กับ Android Framework Component ต่างๆ
- Dagger 2 in Android [Part 3] — ทำ Dependency Injection ให้กับ Activity และ Fragment
- ส่งข้อมูลระหว่าง Activity/Fragment แบบหล่อๆด้วย LiveData และ ViewModel ของ Android Architecture Components
- เมื่อทำ Google Maps แล้วอยากจะเช็คว่าพิกัดนั้นๆอยู่ในพื้นที่ที่กำหนดไว้หรือป่าว?
- Dagger 2 in Android [Part 2] — มาเตรียมโปรเจคสำหรับ Dagger กัน
- Dagger 2 in Android [Part 1] — Dependency Injection แบบหล่อๆด้วย Dagger 2
- เตรียมตัวให้พร้อมกับ Display Cutout บน Android 9 Pie
- หมดปัญหาวุ่นวายกับ Background Task ด้วย WorkManager
- มาทำชีวิตให้ง่ายขึ้น เขียนโค้ดให้ดีขึ้นด้วย AndroidX Annotation กันเถอะ
- แอบส่อง ImageDecoder ใน Android 9 Pie ที่จะมาแทนที่ BitmapFactory
- สร้าง RecyclerView แบบสบายๆด้วย ListAdapter
- Service in Android — [ตอนที่ 6] JobIntentService จาก Android Jetpack เพื่อใช้แทน IntentService
- Service in Android — [ตอนที่ 5] มาสร้าง Bound Service กันเถอะ
- Service in Android — [ตอนที่ 4] มาสร้าง Foreground Service กันเถอะ
- ทำ Auto Initialize ให้กับ Library แบบเท่ๆกันเถอะ
- Firebase Crashlytics มาแล้ววววว ลาก่อน Firebase Crash Reporting
- Service in Android — [ตอนที่ 3] เจาะลึกการเรียกใช้งาน Service และ Intent Service
- Service in Android — [ตอนที่ 2] Lifecycle ของ Service
- Service in Android — [ตอนที่ 1] พื้นฐานของ Service
- ItemTouchHelper ใน Recycler View ที่จะช่วยให้การ Drag และ Swipe เป็นเรื่องที่โคตรง่าย
- ว่าด้วยเรื่อง @SerializedName ใน Gson และ ProGuard
- ภาษา Kotlin กับการทำ Parcelable ในแอนดรอยด์
- ทำ Auto SMS Verification ด้วย Google Play Services
- จะทำยังไงให้ App รู้ได้ว่าผู้ใช้กด Screenshot ระหว่างเปิด App กันอยู่นะ?
- มาทำ Loading ที่ดีต่อใจผู้ใช้ใน Android App กันเถอะ
- รู้จักและเรียกใช้งาน Camera API v1 บนแอนดรอยด์แบบง่ายๆ [ตอนที่ 2]
- รู้จักและเรียกใช้งาน Camera API v1 บนแอนดรอยด์แบบง่ายๆ [ตอนที่ 1]
- ว่าด้วยเรื่อง MAC Address บนอุปกรณ์แอนดรอยด์
- มาสำรวจกันว่ามีคำสั่งสำคัญอะไรบ้างที่เปลี่ยนแปลงไปบน Android 8.0 Oreo
- ดัก Screen Orientation Event ใน Activity อย่างไรให้ถูกต้อง
- ทำไมจึงไม่ควรเก็บข้อมูลทิ้งไว้ใน Singleton หรือ Static Variable
- จัดการปัญหา WebView กับ SSL Certificate อย่างไรให้ถูกต้อง
- Intent และ Pending Intent — ส่งใจ ไปหาเธอ
- ทำไม Android Dev ถึงควรใช้ Parcelable มากกว่า Serializable
- สวัสดี Custom View สุดที่รัก ตอนที่ 2
- สวัสดี Custom View สุดที่รัก ตอนที่ 1
- เมื่อเจ้าของบล็อกต้องทำ Recycler View กับเส้นประเจ้าปัญหา
- มารู้จักและควบคุม System UI ใน Android App กันเถอะ
- รู้จักกับ SnapHelper ของเล่นใหม่ที่เพิ่มเข้ามาใน RecyclerView
- ว่าด้วยเรื่อง Recycler View กับการใช้งานจริงในแบบฉบับเจ้าของบล็อก ตอนที่ 4
- การเปิด Page หรือ Official Account บน Social ต่างๆผ่าน Android App
- ว่าด้วยเรื่อง RecyclerView กับการใช้งานจริงในแบบฉบับเจ้าของบล็อก ตอนที่ 3
- ว่าด้วยเรื่อง RecyclerView กับการใช้งานจริงในแบบฉบับเจ้าของบล็อก ตอนที่ 2
- ว่าด้วยเรื่อง RecyclerView กับการใช้งานจริงในแบบฉบับเจ้าของบล็อก ตอนที่ 1
- วันนี้แอปของคุณรองรับ Multi Window ของ Samsung แล้วหรือยัง?
- ลองเล่น Quick Settings Tile API ของเล่นใหม่ใน Android 7.0 Nougat
- มารู้จักกับ RxJava และ RxAndroid กันเถอะ [ตอนที่ 4]
- มารู้จักกับ RxJava และ RxAndroid กันเถอะ [ตอนที่ 3]
- มารู้จักกับ RxJava และ RxAndroid กันเถอะ [ตอนที่ 2]
- มารู้จักกับ RxJava และ RxAndroid กันเถอะ [ตอนที่ 1]
- รู้กันหรือเปล่าว่าแอนดรอยด์มีสิ่งที่เรียกว่า Device Administrator อยู่นะ
- สรุปเนื้อหาและสิ่งที่ไม่ได้พูดใน Firebase Android Codelabs จากงาน I/O Extended Bangkok [ตอนที่ 2]
- สรุปเนื้อหาและสิ่งที่ไม่ได้พูดใน Firebase Android Codelabs จากงาน I/O Extended Bangkok [ตอนที่ 1]
- รู้จัก Multi Window บน Android 7.0 Nougat และวิธีการรับมือ
- ทำไม Android Developer ควรรู้และเข้าใจใน Activity Lifecycle
- DEX with Over 65K Methods problem and how to use MultiDex in Android
- ทดลองเล่น Cloud Vision API บนแอนดรอยด์
- DEX with Over 65K Methods และการทำ MultiDex ที่นักพัฒนาแอนดรอยด์ควรรู้จักไว้
- เมื่อเจ้าของบล็อกได้รู้จักกับ AOP และได้ลองใช้ AspectJ
- มามะ มาลองเขียน iOS App บน Android Studio กันเถอะ!!
- Google Direction Library — ใช้งาน Google Direction API บน Google Maps แบบง่ายๆ
- มารู้จักกับ Layout Manager ใน Recycler View กันเถอะ!
- Save และ Restore UI State ใน Fragment ควรทำอย่างไรกันนะ?
- มา Save และ Restore UI State ใน Activity ให้ถูกต้องกันเถอะ
- มาเขียน Instrumented Test บน Android Studio กัน
- Chrome Custom Tabs ของดีที่จะช่วยให้การเปิดเว็ปในแอปเป็นเรื่องง่ายๆ
- Let’s Fragment — วิธีการรับส่งข้อมูลของ Fragment
- AppCompatDelegate สำหรับการทำ Activity ใดๆให้รองรับ AppCompat
- File Observer สำหรับตรวจเช็คการเปลี่ยนแปลงของไฟล์
- Localization — Best way to support several language
- Localization — Library สำหรับแอปพลิเคชันหลายภาษา
- มาใช้ Fused Location Provider API กันเถอะ
- การทำให้ TextView กดที่ข้อความบางส่วนได้
- วิธีการเรียกใช้งาน Resource โดยกำหนดชื่อไฟล์จาก String
- รู้จักกับ Snackbar ของเล่นตัวใหม่จาก Material Design
- มาเขียน Unit Test บน Android Studio กัน
- รู้จักกับ Palette API ลูกเล่นใหม่เพื่อเพิ่มสีสันให้กับแอปของคุณ
- รู้จักการใช้งาน Deep Link (URL Scheme) กับ Android Application
- ลองหัดสร้าง Class และ Listener กันเถอะ — ตอนที่ 3
- ลองหัดสร้าง Class และ Listener กันเถอะ — ตอนที่ 2
- ลองหัดสร้าง Class และ Listener กันเถอะ — ตอนที่ 1
- Round Corner Progress Bar สำหรับคนบ้าขอบมน
- Let’s Fragment — ใส่ Indicator ให้กับ View Pager [ภาคสอง]
- Let’s Fragment — ใส่ Indicator ให้กับ View Pager [ภาคแรก]
- Let’s Fragment — เพิ่มลูกเล่นให้กับ View Pager ด้วย Page Transformer
- Let’s Fragment — มาทำ View Pager กันเถิดพี่น้อง~ [ตอนที่ 2]
- Let’s Fragment — มาทำ View Pager กันเถิดพี่น้อง~ [ตอนที่ 1]
- Let’s Fragment — รู้จักกับ FragmentTransaction สำหรับการแสดง Fragment [ตอนที่ 2]
- Let’s Fragment — รู้จักกับ FragmentTransaction สำหรับการแสดง Fragment [ตอนที่ 1]
- Fragment ตอนที่ 4 - Lifecycle ของ Fragment
- Fragment ตอนที่ 3 - Fragment Creation
- Fragment ตอนที่ 2 - Get Started
- Fragment ตอนที่ 1 - Introduction
- เก็บข้อมูล Key-value ลงในเครื่องแบบถาวรด้วย Shared Preferences
- การใช้งาน Simple TCP Library แบบ Simple TCP
- Simple TCP Library — ลากันที TCP ที่ยุ่งยาก
- ทำไมภาพถึงไม่ยอมแสดงใน Gallery
- มาทำความรู้จักกับ Object Animator กันดีกว่า~!
- ใส่รหัสลับสำหรับเปิดแอปพลิเคชันด้วย Secret Code
- เก็บตกโค้ดแอนดรอยด์จาก Snippet ที่ใช้ใน Code Battle@Firebase Dev Day 2017
- เปลี่ยนเสียงพูดให้กลายเป็นข้อความด้วย Voice Recognition
- การทำ Text To Speech เพื่ออ่านข้อความที่ต้องการ
- Screen Capture หรือ Capture ภาพบน View ผ่านโค้ด
- การส่งข้อมูลระหว่าง Activity ผ่าน Intent
- สร้างฐานข้อมูล SQLite อย่างไรให้ไว?
- การนำเข้าข้อมูลจาก .csv ลงในฐานข้อมูล
- การสร้าง Custom Dialog
Android Design
- สร้าง UI ให้ได้ดั่งใจด้วย Shape ใน Jetpack Compose
- สร้าง UI ด้วย Jetpack Compose อย่างมีประสิทธิภาพด้วย Slot API
- ว่าด้วยเรื่อง State Hoisting ใน Jetpack Compose
- Stateless & Stateful Composable ใน Jetpack Compose
- Constraint Layout - Barrier
- Constraint Layout - Guideline
- Constraint Layout - Placeholder
- Constraint Layout - Group
- Constraint Layout - Constrained Width/Height
- กำหนดค่า Margin และ Padding ใน Layout Resource ด้วย Horizontal หรือ Vertical ได้แล้วนะ
- ภาพไอคอนของแอปบนแอนดรอยด์ที่นักพัฒนาควรรู้
- รับมือกับปัญหาชวนปวดหัวกับขนาดของตัวอักษรเมื่อต้องเจอกับฟอนต์ที่หลากหลาย
- เปลี่ยน Launch Screen ให้ดูดีกว่าที่เคยเป็นด้วยเทคนิคง่ายๆกันเถอะ
- เมื่อขนาดหน้าจอของมือถือในยุคใหม่ ไม่ใช่ 16:9 อีกต่อไป
- แบ่ง Layout ให้รองรับหน้าจอทุกขนาดด้วย Configuration Qualifier กันเถอะ
- เปลี่ยนฟอนต์บนแอนดรอยด์แบบง่ายๆด้วย Font Resource
- เลิกใช้ Left/Right และเปลี่ยนมาใช้ Start/End ใน UI Layout ได้แล้วนะ
- Style and Theme — เพราะชีวิตต้องมีสไตล์
- ทำ Password Visibility Toggle แบบง่ายๆได้ด้วย Material Design Components
- จัดการภาพที่ใช้ในบนแอนดรอยด์อย่างไรให้ถูกต้อง
- Constrain Layout ของเล่นใหม่ที่จะมาเปลี่ยนโลกของ UI Layout บนแอนดรอยด์
- มารู้จักกับ Prototyping Tools สำหรับงาน Mobile Application กันเถอะ
- สิ่งที่ควรจะรู้เมื่อต้องตะลุยไปกับงานแอนดรอยด์ที่เกี่ยวกับ Font สุดหรรษา
- เพราะดีไซน์บางอย่างนั้นไม่ได้เหมาะกับบนมือถือเสมอไป
- ทำไมแอนดรอยด์ต้องใช้หน่วย DP?
- แก้ปัญหาภาพพื้นหลังบิดเบี้ยวได้ง่ายๆด้วย FrameLayout และ ImageView
- การใช้งาน Nine Patch ในแอปพลิเคชันแอนดรอยด์
- Padding และ Margin สำคัญและต่างกันอย่างไร?
- การใช้งานภาพ Vector บนแอนดรอยด์
- สร้างภาพง่ายๆจาก XML ด้วย Shape Drawable
- แท้จริงแล้วหน่วย dp คืออะไร?
- ว่าด้วยเรื่อง Size และ Density ของหน้าจอ
- รู้จักกับ Layout Weight ใน Linear Layout
- ว่ากันด้วยเรื่อง Nine Patch บนแอนดรอยด์
Android Dev Tips
- การใช้งาน 3rd Party Service ด้วย API Key ที่นักพัฒนาแอนดรอยด์ควรรู้
- จัดการกับ Token ของ Push Notification อย่างไรดี
- CPU Architecture และ Android ABI ที่นักพัฒนาแอปควรรู้
- UI Preview สำหรับ Jetpack Compose บน Android Studio
- สิ่งที่บริษัทหรือองค์กรควรรู้เกี่ยวกับ Android App Publishing บน Google Play
- Make your Android widget display on the Cover Screen of the Samsung Galaxy Z Flip5
- รู้จักกับ Non-Transitive R Classes บน Android Gradle Plugin
- มาเปลี่ยน Gradle ของเราให้ใช้ Kotlin แทน Groovy กันดีกว่า - Introduction
- มาจัดการกับข้อมูลภายในแอปให้ถูกต้องกันเถอะ
- สิ่งที่นักพัฒนาควรรู้เกี่ยวกับ Data Safety บน Google Play
- Publish Android app ขึ้น Google Play ด้วย GitHub Actions กันดีกว่า
- Chrome for Android ≠ Android WebView
- Google Play SDK Index - เครื่องมือแสดงข้อมูล Commercial SDK ที่นักพัฒนาควรรู้
- เรื่องราวของ Device Storage บนแอนดรอยด์ที่นักพัฒนาควรรู้
- การ Export ไฟล์ AAB บน Android Studio เพื่อนำไป Upload ขึ้น Google Play / Android App Store
- การใช้งาน Logcat v2 บน Android Studio
- การเปิดใช้งาน Play App Signing สำหรับแอปที่มีอยู่บน Google Play แล้ว
- วิธีแก้ปัญหา Android resource linking failed
- Context กับ Target Context ใน Instrumented Test ไม่เหมือนกันนะ
- UI Test บน Android ของทุกคนอาจจะไม่เหมือนกันเสมอไป
- Task และ Back Stack ตอนที่ 8 - Multiple Task & Concurrent Document
- Task และ Back Stack ตอนที่ 7 - Task Affinity
- Task และ Back Stack ตอนที่ 6 - Activity Launch Mode [2/2]
- Task และ Back Stack ตอนที่ 5 - Activity Launch Mode [1/2]
- Task และ Back Stack ตอนที่ 4 - Home Screen และ Recents Screen
- Task และ Back Stack ตอนที่ 3 - Task
- Task และ Back Stack ตอนที่ 2 - Back Stack
- Task และ Back Stack ตอนที่ 1 - Introduction
- ทำไม Android OS จึงเหมาะกับ Kiosk / Vending Machine ในปัจจุบัน
- เมื่อ Google Play Services ให้ผู้ใช้ปิด Ads Personalization ได้
- Java Language Feature บน Android
- เรื่องที่ควรรู้เกี่ยวกับการเขียนเทสบนแอนดรอยด์
- ทำไม App Architecture บนแอนดรอยด์ในยุคนี้ถึงนิยมใช้ Architecture Components?
- ทำไมแอปของเราถึงพังเมื่อเปิดบนเครื่องอื่น?
- App Distribution บนแอนดรอยด์ทำแบบไหนได้บ้าง
- Firebase กับ HMS (Huawei Mobile Services)
- การทำให้ Foldable Android Emulator รองรับ Posture ในรูปแบบต่างๆ
- รู้หรือยัง Android 11 มี Wireless Debugging ให้ใช้ด้วยนะ
- Target API Level บนแอนดรอยด์นั้นสำคัญแค่ไหน?
- Google Play Console สมัยนี้มีอะไรเจ๋งๆสำหรับนักพัฒนาบ้าง
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 10 (API 29)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 9.0 Pie (API 28)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 8.1 Oreo (API 27)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 8.0 Oreo (API 26)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 7.1 Nougat (API 25)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 7.0 Nougat (API 24)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 6.0 Marshmallow (API 23)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 5.1 Lollipop (API 22)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 5.0 Lollipop (API 21)
- สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 4.4 KitKat (API 19)
- มากำหนด Authority ของ Content Provider ให้เหมาะสมกับแอปของคุณกันเถอะ
- สรุปเนื้อหา Modernize the Development of LINE Messenger for Android จากงาน LINE Developer Day 2019
- วันนี้คุณย้ายจาก Support Library ไปเป็น AndroidX แล้วหรือยัง?
- เปิดโปรเจค Android Studio ผ่าน Command Line บน Mac OS และ Linux
- รู้จักกับ Biometric Authentication บนแอนดรอยด์
- บทย่อของการเปลี่ยนแปลงใน Android แต่ละเวอร์ชัน [Feature & API]
- เดี๋ยวนี้ Google Play Console เค้ามี Internal Test ให้แล้วนะ
- Jetifier เบื้องหลังการทำงานของ Android Gradle Plugin สุดเทพสำหรับ AndroidX
- ลองตรวจสุขภาพโค้ดด้วย Inspect Code ใน Android Studio กันดูมั้ย?
- ปัญหา Translucent Window บน Android 8.0 Oreo ที่นักพัฒนาไม่ควรมองข้าม
- รู้จักกับ google-services.json เมื่อต้องใช้งาน Google API และ Firebase
- สรุปเนื้อหาสำคัญจากงาน Android Flash Talk ณ เชียงใหม่
- มาลองทำ Plugin เพื่อใช้งานบน Android Studio กัน - ตอนที่ 1 เริ่มต้น
- เรียกใช้งาน Dependency ผ่าน Git แบบง่ายๆด้วย JitPack
- ยุคนี้ทั้งที เปลี่ยน findViewById เป็นแบบใหม่กันเถอะ
- เล่าสู่กันฟังกับ Architecture Components จากงาน GDD Europe 2017
- Supporting Samsung Devices in 2017 is easier than ever for Android 7.0
- วิธีแก้ปัญหา Unable to unzip และ Could not expand ZIP บน Android Studio
- สรุปสาระสำคัญจากงาน Google I/O 2017 ที่นักพัฒนาแอนดรอยด์ไม่ควรพลาด
- ว่าด้วยเรื่อง Issue ของ Activity Stack สุดแปลกที่ไม่เคยเจอมาก่อน
- รวม Session สำหรับสาย Android ที่น่าสนใจจากในงาน Google I/O 2017
- สิ่งที่ Android Dev ควรรู้ใน Samsung Galaxy ยุค 2017 (และหลังจากนี้)
- เมื่อ Google Play บังคับให้นักพัฒนาต้องใส่ Privacy Policy เมื่อเข้าถึงความเป็นส่วนตัวของผู้ใช้
- วิธีการสร้าง Keystore บน Android Studio
- ประเด็นด้านความปลอดภัยกับ Recents Screen บนแอนดรอยด์
- เมื่อเจ้าของบล็อกต้องเจอปัญหา Dependency Conflict
- วิธีการเปิด Freeform Mode บน Android 7.0 Nougat ขึ้นไป
- เรื่องเล่าจาก Instant Run สุดเทพบน Android Studio
- การเข้าใช้งาน GitHub แบบมี Two-Factor Authentication บน Android Studio
- Floobits — Realtime Collaborative Editing สุดเจ๋งสำหรับ Android และ Web Developer ที่ไม่ควรพลาด
- ปฏิบัติการณ์ทำ Mockup แบบฉบับเร่งด่วนโคตรๆแต่ไม่ธรรมดาด้วยเวลาแค่ 2 วัน
- เหล่า Android Dev ทั้งหลายลองมาทำความรู้จักกับ Android TV กันเถอะ~
- Configuration Changes เรื่องสำคัญที่ Android Dev ไม่ควรพลาด
- มาเพิ่ม Developer Page ใน Google Play กัน
- เปลี่ยนชื่อ Package Name ใน Android Studio ให้อยู่รอดปลอดภัย
- วิธีใช้งาน AAR Library ในโปรเจคแอนดรอยด์ของเรา
- Unit Test กับ Instrumented Test บน Android Studio ต่างกันอย่างไร
- โค้ดที่มีเส้นขีดกลาง เค้าเรียกว่า Deprecated Code
- Logcat พื้นฐานสำคัญที่ Android Developer ต้องรู้จัก
- 17 พื้นฐานที่ควรรู้สำหรับสายงาน Android Developer
- How to take a screenshot on Sony Android TV
- การ Capture Screen บน Sony Android TV
- เย้! เจ้าของบล็อกได้เป็น Google Developer Expert แล้วครับ
- Google Developer Experts คืออะไรกันนะ?
- 10 ข้อที่ควรทำและ 10 ข้อที่ไม่ควรทำบน Google Play Store
- ทำไมต้องกำหนดเลขเวอร์ชันของ Dependencies ใน Android Studio
- วิธีตรวจสอบเวอร์ชันล่าสุดของ Dependencies ที่ใช้งานอยู่
- การตั้งค่า Environment Variable สำหรับ Android SDK บน Windows
- การตั้งค่า Environment Variable สำหรับ Android SDK บน Mac OS
- Project Structure บน Android Studio
- 20 ข้อดีที่ทำให้ Android Studio เป็น IDE ที่น่าใช้กว่า Eclipse ADT
- วิธีการดึงไฟล์ฐานข้อมูลจากเครื่องจริง
- การกำหนด Content Rating สำหรับแอพที่อยู่บน Google Play
- ไฟล์ AAR คืออะไร และแตกต่างอย่างไรกับ JAR
- มีอะไรบ้างใน Android 5.1 Lollipop MR1 [แบบฉบับนักพัฒนา]
- Android Drawable Importer — Plugin แนะนำสำหรับ Android Studio
- ขั้นตอนการติดตั้ง Plugin ให้กับ Android Studio
- รู้จักการใช้งาน Android Studio แบบพื้นฐาน — ตอนที่ 2
- รู้จักการใช้งาน Android Studio แบบพื้นฐาน — ตอนที่ 1
- เบื่อ Case Sensitive เวลาเรียก Code Completion บน Android Studio กันหรือป่าว
- การใช้งาน Android Virtual Device บน Android Studio
- เปลี่ยนภาพไอคอนของแอปแบบง่ายๆด้วย Asset Studio บน Android Studio
- การ Export ไฟล์ APK บน Android Studio เพื่อนำไป Upload ขึ้น Android App Store
- เปลี่ยนสีให้กับ Logcat บน Android Studio
- รู้จักเครื่อง ก่อนคิดจะเขียนแอพฯ
- รู้จักกับ Dependency บน Android Studio
- Let’s Fragment — รู้จักกับ FragmentTransaction สำหรับการแสดง Fragment [ตอนที่ 1]
- การส่งแอปขึ้น Google Play
- มีอะไรใหม่ใน Android L Developer Preview [แบบฉบับนักพัฒนา]
- ช่วยด้วย! พิมพ์ภาษาไทยใน Android Emulator ไม่ได้!
- รู้จักกับ Keystore และ Debug/Signed Keystore
- OnClick OnLongClick และ OnTouch สัมพันธ์กันอย่างไร?
- แนวทางสำหรับการเริ่มต้นเขียน Android App
- วิธีดึงข้อมูลที่อยู่ภายใน Internal Storage ของแอปพลิเคชัน
- การทำ ADB Debugging ผ่าน WiFi
- Package Name คืออะไร ทำไมถึงสำคัญกับการพัฒนาแอปแอนดรอยด์
- ติดตั้ง Google Apps ให้กับ Genymotion
- ปัญหา INSTALL_FAILED_CPU_ABI_INCOMPATIBLE บน Genymotion
- วิธีเช็คว่าอุปกรณ์แอนดรอยด์เป็น Phone หรือ Tablet
- หา Developer Options ไม่เจอ~
- Android Manifest สำหรับผู้เริ่มต้น
- USB Host และ USB Accessory บน Android
- เมื่อต้องเจอคำสั่งใน Android API ที่เรียกใช้งานต่างกันในแต่ละเวอร์ชัน
- Device Art Generator — สร้างภาพตัวอย่างง่าย ๆ ด้วยภาพบนอุปกรณ์แอนดรอยด์
- มาทำให้แอปรองรับหลายภาษากันเถอะ
- ว่าด้วยเรื่อง Screen Orientation บนแอนดรอยด์
- การติดตั้ง ADB Driver แบบ Manual บน Windows
- Genymotion — Android Emulator สุดเจ๋งสำหรับนักพัฒนาแอนดรอยด์
- ว่าด้วยเรื่อง Resource, Assets และ External Storage ในแอนดรอยด์
- App Filter บน Google Play - ทำไมบางเครื่องถึงลงแอปบางตัวไม่ได้นะ?