Thư viện load ảnh Glide cho ứng dụng Android

GIỚI THIỆU
Glide là một thư viện open source hỗ trợ load ảnh trên Android. Dùng Glide sẽ đơn giản hóa các công việc mà bạn cần làm khi sử dụng một bức ảnh trong Android đi rất nhiều. Chúng ta không cần quan tâm đến việc decoding, memory and disk caching mà thay vào đó chỉ cần sử dụng interface rất đơn giản từ Glide.

Glide hỗ trợ fetching, decoding và hiển thị cả ảnh tĩnh hoặc ảnh động đó là điểm nổi bật của nó so với các thư viện load ảnh khác cho android. Glide có thể được dễ dàng đưa vào bất kỳ mô hình mạng nào. Mặc định Glide sử dụng mô hình custom của HttpUrlConnection tuy nhiên chúng ta có thể dễ dàng cho nó hoạt động với Volley hoặc OkHttp

CÀI ĐẶT
Để sử dụng Glide trong project trên Android studio, chúng ta thêm dependencies sau vào build.gradle

Thêm các Permission vào AndroidManifest.xml

Nếu ứng dụng có sử dụng proguard khi biên dịch thì chúng ta thêm đoạn sau vào file cấu hình proguard

SỬ DỤNG

Nếu trước đây bạn đã từng sử dụng thư viện load ảnh Picasso, bạn sẽ cảm thấy bất ngờ vì cách sử dụng của Glide gần như giống hệt Picasso, cũng with() cũng load() cũng into() … nhưng hãy cùng xem liệu chúng có phải “hàng nhái” giống như hộp bánh “choco-pan” giá 15k đang tràn ngập thị trường nông thôn không nhé.

Load ảnh với Picasso

Load ảnh với Glide

Nhìn giống hàng nhái nhưng không phải, with đã được Glide thiết kế không chỉ sử dụng Context mà còn có thể sử dụng với Fragment, Activity, FragmentActivity … từ đó context sẽ tự động được lấy ra.

Điểm lợi thế của việc truyền Fragment, Activity vào Glide đó là việc load ảnh sẽ được thực hiện theo vòng đời của Activity, Fragment ví dụ tạm dừng load ảnh khi Activity ở trạng thái Paused và tự động resume khi Activity resume.

Kết quả

gliceexample

Resize ảnh

Nếu bạn muốn tự quyết định kích thước bức ảnh được load lên thì có thể dùng override(int with, int height) của Glide tương đương vói “resize()` của Picasso.

Center Crop

Fit Center

Placeholder và Error

MỞ RỘNG

Bitmap Format mặc định là RGB_565 thay vì ARGB_8888 như Picasso điều đó có nghĩa rằng mỗi pixel trên Bitmap Glide load ra chiếm 16 bytes thay vì 32 bytes như Picasso, đồng nghĩa bộ nhớ tiêu tốn cho Bitmap sẽ giảm 50%. Tuy nhiên ưu điểm đó cũng chính là nhược điểm về chất lượng ảnh, bức ảnh dùng định dạng RGB_565 sẽ kém chất lượng hơn ARGB_8888. Nói vậy chứ chất lượng ảnh RGB_565 cũng không phải là quá tệ. Còn nếu bạn vẫn muốn điều tốt nhất, tuyệt vời nhất thì hoàn toàn có thể sử dụng định dạng ARGB_8888 với Glide.

Tạo một class kế thừa từ GlideModule

Và sau đó khai báo trong AndroidManifest.xml

Một điểm đáng giá nữa, khi sử dụng Glide load ảnh lên ImageView nó chỉ load ảnh theo đúng kích thước của ImageView chứ không load kích thước thật của bức ảnh. Ví dụ bạn có ảnh 1920×1080 muốn load lên ImageView kích thước 192×108 thì Glide sẽ resize Bitmap lúc decode khiến cho bộ nhớ tiêu thụ giảm đi đáng kể.

Nguồn: VIBLO

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *