Skip to content
Showing 1-50 of 197 items.
@renovate
Admin 10/03/2021 10:20
Tìm hiểu Proguard trong Android

1. Proguard là gì ? Proguard là một công cụ java miễn phí trong android. Cụ thể nó giúp ứng dụng của chúng ta: Giảm kích thước của ứng dụng đi đáng kể Tối ưu hoá code bằng cách xoá đi những class và method không được sử dụng, tạo những inlining function từ function sẵn có có thể chuyển. Góp phần chống dịch ngược code của chúng ta bằng viết thay đổi tên lớp, phương thức, biến, tên hàm,...

Proguard Android
@renovate
Admin 16/03/2021 11:00
Tìm hiểu về Android KTX

Mở đầu Trong Google I/O 2018, Google đã giới thiệu Android Jetpack và điều này đã thay đổi cách phát triển một ứng dụng Android mạnh mẽ hiện đại. Jetpack is a collection of libraries, tools, and guidance to help developers write high-quality apps easier. Jetpack được tạo ra để sử dụng những ưu điểm của ngôn ngữ Kotlin để giúp các nhà phát triển làm việc hiệu quả hơn. Vì vậy, trong blog này, chúng ta sẽ...

Kotlin Android
@renovate
Admin 16/03/2021 21:20
10 điều bạn nên biết khi bắt đầu nghiệp dev Android

Trong bài viết này, mình sẽ cung cấp cho bạn chính xác những gì bạn nên biết khi bắt đầu phát triển Android. Những mẹo này sẽ giúp bạn học cách phát triển Android nhanh hơn nhiều so với việc bạn loay hoay tìm cách hiểu những gì cần học trước. Vì vậy, hãy bắt tay ngay vào nó nhé ! Let's go 1. Java vs Kotlin —Nên học cái nào trước ? Một trong những tình huống khó xử đầu tiên bạn sẽ phải...

Kotlin Android development
@renovate
Admin 19/03/2021 00:00
Thu hẹp khoảng cách giữa coroutines, thread và concurrency

“Coroutines là những Thread nhẹ nhàng”, bạn đã đọc nó bao nhiêu lần rồi? Việc đó có nghĩa gì với bạn không? Chắc là không. Hãy tiếp tục đọc để tìm hiểu thêm về cách các corout thực sự được thực thi trên Android runtime, cách chúng liên quan đến các luồng và các vấn đề đồng thời không thể tránh khỏi khi sử dụng mô hình phân luồng của ngôn ngữ lập trình Java. Coroutines và...

Android
@renovate
Admin 21/03/2021 11:30
Đưa work xuống background với Coroutines trong Android

Giới thiệu Coroutines giờ đã không còn xa lạ với dev android nữa, nhưng liệu chúng ta đã dùng đc hết các công dụng nó mang lại ngoài việc dùng để gọi api với retrofit hay truy cập db với room, nhiều khi chúng ta mới chỉ hiểu nó có tính năng nhưng chưa biết áp dụng vào đâu khi dev Android. Vậy hãy cùng bàn trong bài này nhé. Thực hiện Khái niệm 60fps nghĩa là system sẽ redraw activity mỗi một khoảng...

Android background work Coroutines
@renovate
Admin 21/03/2021 21:40
Quản lý bộ nhớ ứng dụng của bạn

RAM là một tài nguyên quan trọng trong bất kỳ môi trường phát triển phần mềm nào, nó thậm chí còn có giá trị hơn trên hệ điều hành di động, nơi bộ nhớ vật lý thường bị hạn chế. Mặc dù cả Android Runtime (ART) và máy ảo Dalvik đều thực hiện việc thu thập rác định kỳ, nhưng điều này không có nghĩa là bạn không quan tâm tới thời điểm và vị trí ứng dụng của bạn chiếm dụng và...

Android Android Performance memory
@renovate
Admin 22/03/2021 05:10
Tìm hiểu về Google Chrome Cast

1. Chromecast là gì. Phần bài viết này giành cho các bạn viết ựng có liên quan đến Video, Audio và các ứng dụng liên quan đến đa phượng tiện. Lần đầu tiên Chromecast được gới thiệu vào năm 2013 tại US. Ngay từ phiên bản đầu tiên Google thiết kế ChromeCast nhằm để tương thích với cách ứng dụng của bên thứ 3, mục đích tạo ra ban đầu là bạn có thể truyền dẫn, chia sẻ tất cả mọi thứ...

Kotlin Android Google ChromeCast
@renovate
Admin 22/03/2021 08:00
Navigation Component

Introduction Navigation Component are in simple terms, components required to perform navigations and Navigation refers to the interactions that allow users to navigate across various areas within the app. Android Jetpack's Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer. The Navigation component also ensures a consistent and predictable user experience by adhering to an established set of...

Happy New Year android kotlin Android Android Navigation Component
@renovate
Admin 22/03/2021 08:30
Dependencies Injection trong Android - Phần 1: Hiểu khái niệm chính từ ứng dụng của bạn

Lời giới thiệu Chào các bạn. Khi lập trình Android, chúng ta đều có những design pattern riêng cho team mình. Một trong những kĩ thuật khá quen thuộc chúng ta sử dụng với design pattern MVVM chính là Dependencies Injection (DI). Đã có nhiều thư viện ra đời để hỗ trợ DI như Dagger, Hilt, Koin. Bản thân mình những ngày đầu đọc khá nhiều về những thư viện này nhưng vẫn thực sự đã rất khó hiểu, cho...

Dependency Injection Android
@renovate
Admin 22/03/2021 13:20
Detect Screenshots trong Android

Sau một thời gian tìm hiểu thì mình biết được rằng Android không cung cấp một API chính thức nào dành cho việc phát hiện người dùng có chụp ảnh màn hình hay không. Tuy nhiên vẫn có cách để giải quyết điều đó. Bạn đã thắc mắc tại sao các ứng dụng như Snapchat và Instagram có thể phát hiện chụp ảnh màn hình ngay khi bạn chụp chưa? Trong bài viết này, chúng ta sẽ khám phá cách thực hiện...

Android detect screenshot
@renovate
Admin 22/03/2021 13:50
Làm ứng dụng học toán đơn giản với React Native - Phần 7

Chào các bạn đã trở lại với series làm ứng dụng học toán đơn giản với React native của mình Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.bloodycotech001, vì 1 số lý do nên mình vẫn chưa update app kịp những gì có trong bài viết. Nếu các bạn có thời gian, có thể cho mình xin 1 đánh giá ( bao nhiêu sao cũng được) và 1 comment chân thành từ các bạn về app hoặc...

JavaScript Android React Mobile App React Native
@renovate
Admin 25/03/2021 17:10
How to config your output file name in Gradle Kotlin DSL - Android

Config your output file name in Gradle Kotlin DSL Thời gian qua mình có làm việc khá nhiều với Gradle Kotlin DSL. Có lần, mình cần config file name khi build của file .apk để hỗ trợ cho CI/CD. Nếu sử dụng Groovy thì Okie, câu chuyện cũng khá đơn giản, mọi người có thể tìm thấy ở đây. Nhưng với Gradle Kotlin DSL thì lại khác, mình cũng đã mất nữa buổi "chời ơi đất hởi" để tìm giải pháp cho vấn...

Happy New Year Kotlin Android Gradle Kotlin DSL gradle
@renovate
Admin 05/05/2021 17:10
Navigation Component and example

I. Navigation Component 1. Navigation Component là gì? Hiểu đơn giản navigation component là thành phần cho phép user điều hướng qua lại giữa các thành phần(activity, fragment) trong ứng dụng (thay thế cho việc sử dụng intent) 2. Các nguyên lý trong navigation component Fixed start destination Theo nguyên lý này, tất cả các app đều phải có 1 start destination cố định. Đây là màn hình đầu tiên khi user nhìn lúc họ mở...

Android May Fest
@renovate
Admin 05/05/2021 17:10
Tìm hiểu về Kotlin Coroutine

1. Coroutine là gì ? Về cơ bản thì coroutines là 1 thuật toán có khả năng dừng (suspend) và tiếp tục (resume) việc thực thi code nằm trong nó mà không làm cho thread bị block. Trong Android, nếu bạn chạy 1 hàm phức tạp nào đó trên main thread thì nó sẽ block UI cho đến khi hàm chạy xong. Block UI sẽ làm cho app rơi vào trạng thái ANR và khả năng lớn là user sẽ uninstall app của bạn. Ngược lại, suspend tỏ ra...

Kotlin Android May Fest Coroutine
@renovate
Admin 05/05/2021 17:10
Android Architect Component - Paging Library

I. Tổng quan về Paging 1. Paging labrary là gì? Paging library là một component của Android Jetpack Sử dụng để tải và hiển thị một lượng nhỏ dữ liệu từ tập dữ liệu (local storage hoặc server api). Bằng cách đó, làm giảm việc sử dụng băng thông mạng. Hỗ trợ với LiveData hoặc RxJava cho việc quan sát dữ liệu mới trên UI. Thêm Paging libary vào ứng dụng Android dependencies { def paging_version = "2.1.2" ...

Android May Fest Paging
@renovate
Admin 12/05/2021 09:30
Navigation Component 1 cách giải quyết tốt cho việc chuyển đổi screen

Navigation Component là gì ? -Navigation là 1 thư viện quan trọng trong bộ thư viện của Android Jetpack's nó có thể giúp bạn điều hướng tới mọi nơi trong ứng dụng của bạn nếu bạn muốn, hổ trợ Animation và cả by Argument, Navigation phù hợp với mô hình Single Activiy hiện tại theo đề xuất của Google, và sau đây mình sẽ cùng các bạn đi sơ lược quá nó 1 chút nhé, nếu thấy nó bổ ích các bạn có...

#AppMobile Kotlin Android navigation Android Jetpack
@renovate
Admin 14/05/2021 17:30
Android demo app: Code một app chuyển đổi đơn vị tiền tệ sử dụng MVVM và Jetpack cơ bản

Trong bài viết này mình sẽ cùng viết một app chuyển đổi đơn vị tiền tệ, sử dụng những công cụ trong gói JetPack và sử dụng mô hình MVVM nhé ! Cụ thể sẽ gồm có : Kotlin MVVM (Model View ViewModel Pattern) Hilt (For Dependency Injection) Retrofit Live Data Data Binding Kotlin Flow Kotlin Coroutine.... 1. Add thư viện cho project: Thêm đoạn code này vào build.gradle (Module App) , apply plugin: 'com.android.application' apply...

android kotlin Android Android Jetpack Hilt
@renovate
Admin 18/05/2021 20:50
Các loại Design Patterns hay có ở Android và App Architectures

Khám phá cách làm cho code Android của bạn clean hơn và dễ hiểu hơn với các design patterns phổ biến khi lập trình Android. Bài viết này sẽ giới thiệu các Design Patterns và App Architectures phổ biến nhất mà bạn có thể sử dụng trong khi phát triển ứng dụng. Hiểu đơn giản thì Design patterns là giải pháp có thể tái sử dụng cho các vấn đề phần mềm thông thường. Còn App Architecture cung cấp giải...

Kotlin Android Design Patterns Clean Architecture
@renovate
Admin 19/05/2021 15:40
Test retrofit converter với Mock Webserver

Việc sử dụng Unit tests + Mock Webserver giúp chúng ta có thể test việc tích hợp retrofit, giảm rất nhiều thời gian để tìm ra những lỗi có thể xảy ra với JSON parser. Ở bài này mình sẽ chia sẻ cách để test retrofit converter với các phần sau: Coroutines cho async Mock api responses với Mockwebserver JSON parsing với Kotlin serialization Tại sao cần test network? Để chắc chắn rằng việc tích hợp network là đúng...

Android
@renovate
Admin 20/05/2021 20:30
Material theme trong jetpack compose

Như các bạn đã biết, Material cho phép chúng ta có một giao diện người dùng thống nhất tuân theo các nguyên tắc và phương pháp hay nhất về giao diện người dùng Android, nhưng đồng thời, nó rất hạn chế khi ứng dụng cần mức độ tùy chỉnh UI phức tạp hơn. Trong bài đăng này, chúng ta sẽ tìm hiểu cách điều chỉnh, tùy chỉnh và mở rộng Compose Material Theme để đáp ứng các yêu cầu về UI ứng...

Android Jetpack Compose material
@renovate
Admin 21/05/2021 11:20
Hiển thị Image nhiều hình dạng với ShapeableImageView

Trước đây khi sử dụng ImageView để hiển thị hình ảnh thì nó đơn giản chỉ hiển thị với hình chữ nhật. Để hiển thị hình dạng khác mà không tốn thời gian ta thường nhờ đến sự cứu cánh của các thư viện, điển hình như CircleImageView của hdodenhof. Và rồi cuối cùng thì Android cũng đã giới thiệu ShapeableImageView trong Material Design ShapeableImageView ShapeableImageView kế thừa từ...

Android ImageView ShapeableImageView
@renovate
Admin 21/05/2021 12:10
Dependencies Injection trong Android - Phần 3: Dagger2

Lời giới thiệu Trong phần 1 và phần 2, chúng ta đã hình dung được việc tự quản lí các dependencies injection cũng như sự vất vả khi mà bài toán bắt đầu lớn hơn, càng nhiều chỗ cần dùng thì càng nhiều lần phải từng bước tạo chúng, và cũng càng phải cần quản lí chặt chẽ phạm vi, sự tồn tại của chúng. Trong khi chúng ta chỉ làm việc chủ yếu với 1 instance thôi, nếu như có một công...

Dependency Injection Android
@renovate
Admin 21/05/2021 17:10
Giao tiếp giữa các Fragment

Giao tiếp giữa các Fragment Để có thể tái sử dụng các Fragment, bạn nên xây dựng các Fragment là hoàn toàn độc lập về dữ liệu cũng như là giao diện. Khi đã xác định được các Fragment có thể tái sử dụng, bạn có thể gắn chúng với 1 Activity hoặc Fragment khác và kết nối chúng với logic của ứng dụng. Để phản ứng với các sự kiện bên ngoài (có thể là từ thao tác người dùng, dữ liệu...

Android AndroidFragment ViewModel
@renovate
Admin 02/06/2021 17:40
[Android] Giao tiếp giữa các fragment không dùng interface. Bạn đã thử chưa ?

Xin chào bạn đọc, chào mừng bạn đến với bài chia sẻ của mình. Chủ đề chính ngày hôm nay: "Giao tiếp giữa các fragment không dùng interface". Trong quá trình học và làm việc với Android thì chắc hẳn trong số chúng ta ai cũng đã và đang gặp phải trường hợp truyền dữ liệu giữa fragment với fragmnet hoặc fragment với activity. Ngoài cách truyền thống như là sử dụng interface hoặc broadcast...

Android ViewModel Android Fragment Communication
@renovate
Admin 05/06/2021 09:30
Các loại Design Patterns thường dùng ở Android và App Architectures - Phần 2

Chào các bạn, ở phần trước chúng ta đã cùng nhau tìm hiểu qua về Creational patterns và Structural patterns và những trường hợp hay sử dụng chúng ở trong Android. Tiếp theo hôm nay chúng ta sẽ tìm hiểu nốt phần còn lại là Behavioral Patterns và App Architectures nhé. Thôi bắt đầu ngay nào. Behavioral Patterns “Vậy… làm cách nào để biết một class đang chịu trách nhiệm về việc gì?” Behavioral Patterns cho...

Kotlin Android Design Pattern App Architectures
@renovate
Admin 07/06/2021 09:30
Tìm hiểu về Kotlin Multiplatform Mobile

Kotlin Multiplatform Mobile (KMM) là một SDK được thiết kế để làm đơn giản hoá việc tạo ứng dụng trên nhiều môi trường khác nhau. KMM hỗ trợ những hệ điều hành di động như: Ứng dụng và các thư viện Android Android NDK trên ARM32 và ARM64 Apple iOS trên ARM64 (iPhone 5 trở lên), ARM32 (các máy cũ hơn) và máy ảo Apple watchOS trên ARM64 (Apple Watch Series 4 và mới hơn), ARM32 (các dòng máy cũ hơn) và máy...

iOS Kotlin Android
@renovate
Admin 14/06/2021 00:00
Dynamic Shortcuts Android

Chào mọi người, đây là first post của mình =))) Trong bài này mình sẽ giới thiệu cho các bạn 1 thứ rất hay ho : Dynamic Shortcuts Android Ok bắt đầu. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Shortcut Manager để quản lý shortcuts var shortcutManager = getSystemService(ShortcutManager::class.java) // Tạo...

Android dynamic dynamic shortcuts android
@renovate
Admin 14/06/2021 18:30
Tìm hiểu cơ bản về Hilt trong Android qua App demo !

1. Giới thiệu: Depedency Injection (DI) là một kĩ thuật được sử dụng rất rộng rãi trong lập trình android. Với việc tuân theo các nguyên tắc của DI, bạn đã đặt nền tảng cho một kiến trúc tốt, sẽ mở rộng và quản lí dự án của bạn dễ dàng hơn. Ở bài viết này chúng ta sẽ cùng tìm hiểu cơ bản về Hilt. Hilt cung cấp các cách cơ bản để thực hiện DI trong ứng dụng của bạn Bạn sẽ học...

Android Dagger Hilt
@renovate
Admin 17/06/2021 23:20
Upload file bằng Retrofit và URI trên Android (step-by-step)

I. Lời mở đầu Xin chào các bạn! Lâu lắm rồi mình mới có bài trên Viblo (chắc tầm phải 2 -3 tháng hơn) và hôm nay để đánh dấu sự quay trở lại này mình xin gửi đến các bạn một bài viết với chủ đề là Upload file (hình ảnh, document…) bằng Retrofit (hoặc các library bất kỳ có hỗ trợ RequestBody của okhttp3) và URI trên Android. Mình đang tham gia một dự án có chức năng upload hình (chọn từ...

Android retrofit
@renovate
Admin 18/06/2021 06:40
Voice to Text Speech Recognition

The SpeechRecognizer class provides access to the speech recognition service. Its a google Api service that allows access to the speech recognizer. So to but it in simplier terms, this api allows you to talk to your devices and converts your speech into text. In order for this service to run its methods have to be invoked only from thr main application thread. Now lets create and app to demo how it works. Note: In this demo we will use our own interface and not that of the google's...

Kotlin android kotlin Android SpeechRecognition
@renovate
Admin 19/06/2021 00:40
Tổng quan về Kotlin Coroutines trong Android

Giới thiệu Coroutines xây dựng dựa trên các chức năng thông thường bằng cách thêm hai hoạt động mới (ngoài việc invoke/call và return): suspend - tạm dừng việc thực thi coroutine hiện tại, lưu tất cả các biến cục bộ. Luồng hiện tại có thể tiếp tục công việc của nó, trong khi mã tạm ngừng chạy trên một luồng khác. resume - tiếp tục suspended coroutine từ nơi nó đã bị tạm dừng khi kết...

Android Coroutine
@renovate
Admin 19/06/2021 17:40
Navigation component - SafeArgs

Giới thiệu Chúng ta thường muốn truyền dữ liệu khi điều hướng tới những màn hình, đích đến khác nhau. Trái ngược với việc sử dựng các đối tượng toàn cục, truyền tải dữ liệu cho phép đóng gói tốt hơn và chia sẻ an toàn hơn tới các fragments hoặc activities thực sự cần tới dữ liệu này. Công việc truyền tải này trước nay vẫn luôn được Bundles xử lý, và nó đã xử lý tương...

Android Android Navigation Component
@renovate
Admin 20/06/2021 16:20
Android notification channel

Giới thiệu Kể từ Android 8.0 (API 26), mọi notification đều phải được gắn với một channel. Với mỗi channel thì bạn có thể set các đặc điểm chung cho tất cả các notification thuộc channel đó. Và người dùng có thể thay đổi những thông số của các channel theo ý họ muốn. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel val name = getString(R.string.channel_name) val...

Android notification channel
@renovate
Admin 21/06/2021 00:30
Android Security tips

Android đã được tích hợp các tính năng bảo mật giúp giảm đáng kể tần suất và tác động của các vấn đề bảo mật tới ứng dụng. Hệ thống được thiết kế để bạn có thể xây dựng ứng dụng của mình với các permission, đồng thời tránh các quyết định khó khăn về bảo mật. Các tính năng bảo mật cốt lõi sau đây giúp bạn xây dựng các ứng dụng an toàn: Android Application Sandbox: cách...

Security Android
@renovate
Admin 22/06/2021 00:20
Tìm hiểu Các kiến thức cơ bản về Rxjava

1. Rx là gì ? - Rx là một api cho lập trình không đồng bộ với các luồng có thể quan sát được - Rx là sự kết hợp của những ý tưởng tốt nhất về Observer pattern, Iterator pattern và functional programming. - RxJava cơ bản là một thư viện cung cấp các sự kiện không đồng bộ được phát triển theo Observer Pattern. - Để sử dụng được Rxjava 3 chúng ta thêm vào Gradle dependencies { implementation...

Android
@renovate
Admin 22/06/2021 01:40
Dependencies Injection trong Android - Phần 4: Scopes với Dagger2

Lời giới thiệu Đã bao giờ bạn biết tới Singleton Design pattern chưa? Đôi lúc bạn chỉ muốn có một instance duy nhất trong toàn app vì những lí do sau: Nhiều khi một instance rất tốn nhiều bước để tạo và bạn không muốn tạo một instance mới, mà lại được quá nhiều chỗ trong app sử dụng, như là instance RetrofitService, instance JsonParser, instance OkHttpClient. Cho dù cả việc tạo mới đã có Dagger lo,...

Dependency Injection Android