基於Glide V4.0封裝的GlideImageView,可監聽加載圖片時的進度

GlideImageView 是基於Glide V4.0設計的,實現以下特性:

一、經過提供的屬性能夠設置圖片的圓角、邊框。
二、能夠設置點擊觸摸圖片時的顏色、透明度。
三、一行代碼加載來自網絡、res、SDCard中的圖片,可加載成圓形。
四、能夠監聽加載圖片時的進度。javascript


設置圓角、邊框的圖片,觸摸圖片時的效果,顯示Gif圖的效果


監聽先加載縮略圖再加載高清圖片進度的效果圖



GitHub地址

APK下載地址,去手機上體驗吧 (◐‿◑)


具體使用說明以下

Gradle:

compile 'com.sunfusheng:glideimageview:1.0.0'複製代碼

Maven:

<dependency>
  <groupId>com.sunfusheng</groupId>
  <artifactId>glideimageview</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>複製代碼


ShapeImageView 和 GlideImageView 共同的屬性

該庫提供了一個ShapeImageView類,能夠在xml當中,也能夠在代碼中設置圖片的一些屬性,
固然這些屬性也能夠在GlideImageView上面設置,具體屬性以下java

Attribute 屬性 Description 描述
siv_border_color 邊框顏色
siv_border_width 邊框寬度
siv_pressed_color 觸摸圖片時的顏色
siv_pressed_alpha 觸摸圖片時的顏色透明度: 0.0f - 1.0f
siv_radius 圓角弧度
siv_shape_type 兩種形狀類型:默認是0:rectangle、1:circle

下面是在xml中和代碼中設置的效果

xml中設置 代碼中設置


一行代碼加載來自網絡、res、SDCard中圖片

public GlideImageView loadImage(String url, int placeholderResId);
public GlideImageView loadLocalImage(@DrawableRes int resId, int placeholderResId); 
public GlideImageView loadLocalImage(String localPath, int placeholderResId);複製代碼

一行代碼加載來自網絡、res、SDCard中圖片成圓形

public GlideImageView loadCircleImage(String url, int placeholderResId); 
public GlideImageView loadLocalCircleImage(int resId, int placeholderResId);
public GlideImageView loadLocalCircleImage(String localPath, int placeholderResId);複製代碼

若是你以爲上面的方法還不能知足你,那麼你能夠經過下面的方法追加本身想要的屬性來加載圖片

RequestOptions requestOptions(int placeholderResId);
RequestOptions circleRequestOptions(int placeholderResId);

GlideImageView load(int resId, RequestOptions options);
GlideImageView load(Uri uri, RequestOptions options);
GlideImageView load(String url, RequestOptions options);複製代碼

若是你仍是以爲得不到知足,好吧,我提供了GlideImageLoader類加載圖片,好比這樣加載圖片:先加載縮略圖再加載高清圖片,並監聽加載的進度

private void loadImage(String image_url_thumbnail, String image_url) {
    RequestOptions requestOptions = glideImageView.requestOptions(R.color.black)
            .centerCrop()
            .skipMemoryCache(true) // 跳過內存緩存
            .diskCacheStrategy(DiskCacheStrategy.NONE); // 不緩存到SDCard中

    glideImageView.getImageLoader().setOnGlideImageViewListener(image_url, new OnGlideImageViewListener() {
        @Override
        public void onProgress(int percent, boolean isDone, GlideException exception) {
            progressView.setProgress(percent);
            progressView.setVisibility(isDone ? View.GONE : View.VISIBLE);
        }
    });

    glideImageView.getImageLoader().requestBuilder(image_url, requestOptions)
            .thumbnail(Glide.with(ImageActivity.this) // 加載縮略圖
                    .load(image_url_thumbnail)
                    .apply(requestOptions))
            .transition(DrawableTransitionOptions.withCrossFade()) // 動畫漸變加載
            .into(glideImageView);
}複製代碼



該庫提供兩種監聽加載圖片進度的Listener,總有一款是你想要的

public interface OnGlideImageViewListener {
    void onProgress(int percent, boolean isDone, GlideException exception);
}

public interface OnProgressListener {
    void onProgress(String imageUrl, long bytesRead, long totalBytes, boolean isDone, GlideException exception);
}複製代碼


GitHub地址


關於我

我的郵箱:sfsheng0322@126.comgit

GitHub主頁github

簡書主頁緩存

我的博客網絡

新浪微博app

相關文章
相關標籤/搜索