Để hiển thị 1 cái indicator trong Android như iOS thì bạn có thể tham khảo cách này.
- Đầu tiên bạn cần có ảnh loading indicator dạng gif, sau đó tách nó ra thành nhiều ảnh vì bản chất ảnh gif là nhiều ảnh ghép lại với nhau mà (thông thường là dạng png cho đẹp).
- Tiếp theo tạo thẻ ImageView chỗ mà bạn muốn indicator hiển thị.
- Tiếp theo tạo ra file animation cho vào mục drawable bên trong là đường dẫn của các ảnh đã tích ra từ gif
- Thực hiện Animation cho file xml bên trên.
Nào bắt đầu đi thực hiện từng bước.
Kiếm ảnh gif và tách nó ra
Bạn lấy ảnh gif trên mạng hoặc dùng cái này của mình.
Sau đó vào trang này để tách ra: https://convertio.co/gif-png/
Tách xong tải về và copy vào thư mục drawable của dự án ../duan/app/src/main/res/drawable/
Tạo ra thẻ ImageView
<ImageView
android:id="@+id/loadingIcon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="center"
android:visibility="visible"
android:layout_marginEnd="5dp"
android:layout_toStartOf="@+id/statusTitle"/>
Tạo ra file animation
Tạo file loading_icon.xml như sau với duration là tốc độ xoay của icon
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (c) 2019. Trinh Thanh Do
-->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/loading1"
android:duration="60" />
<item
android:drawable="@drawable/loading2"
android:duration="60" />
<item
android:drawable="@drawable/loading3"
android:duration="60" />
<item
android:drawable="@drawable/loading4"
android:duration="60" />
<item
android:drawable="@drawable/loading5"
android:duration="60" />
<item
android:drawable="@drawable/loading6"
android:duration="60" />
<item
android:drawable="@drawable/loading7"
android:duration="60" />
<item
android:drawable="@drawable/loading8"
android:duration="60" />
<item
android:drawable="@drawable/loading9"
android:duration="60" />
<item
android:drawable="@drawable/loading10"
android:duration="60" />
<item
android:drawable="@drawable/loading11"
android:duration="60" />
<item
android:drawable="@drawable/loading12"
android:duration="60" />
</animation-list>
Show nó ra trong code Java
private AnimationDrawable animationDrawable;
private ImageView mIndicatorImg;
mIndicatorImg = view.findViewById(R.id.loadingIcon);
mIndicatorImg.setBackgroundResource(R.drawable.loading_icon);
animationDrawable = (AnimationDrawable) mIndicatorImg.getBackground();
// to show indicator
mIndicatorImg.setVisibility(View.VISIBLE);
animationDrawable.start();
// to hide indicator
// mProgressBar.setVisibility(View.GONE);
// animationDrawable.stop();
Ngoài ra chúng ta có thể dùng thư viện Glide như sau:
Glide.with(context).asGif().load(R.drawable.loading).into(imgView);
Các bài viết không xem thì tiếc:
- Tạo seekbar và kiến thức hữu ích về seekbar trong Android
- Làm sao thiết kế nhiều màn hình trong Android
- Lập trình phóng to thu nhỏ ảnh pinch in – pinch out trong Android
- Lập trình với Recyclerview trong Android – Bài 1 | dotrinh.com
- Lập trình với Recyclerview trong Android – Bài 3 | dotrinh.com
- Phóng to thu nhỏ trong Android với ScaleGestureDetector
- Lập trình với Recyclerview trong Android – Bài 2 | dotrinh.com
- Chuyển một đối tượng sang Json trong Android
- Tạo icon cho app trong android
- Truyền dữ liệu giữa 2 fragment trong android
- Siêu tổng hợp android code snippets (cập nhật thường xuyên)
- Tạo shortcut cho ứng dụng khi cài Android app programmatically
- Hiểu về cách tổ chức file, bộ nhớ của app Android
- Ý nghĩa của clipToPadding trong Android
- Copy file vào điện thoại Android từ macOS 100% ez