GlideImageView 是基于Glide V4.0設(shè)計(jì)的,實(shí)現(xiàn)如下特性:
1、通過(guò)提供的屬性可以設(shè)置圖片的圓角、邊框。
2、可以設(shè)置點(diǎn)擊觸摸圖片時(shí)的顏色、透明度。
3、一行代碼加載來(lái)自網(wǎng)絡(luò)、res、SDCard中的圖片,可加載成圓形。
4、可以監(jiān)聽(tīng)加載圖片時(shí)的進(jìn)度。
下面這張圖是設(shè)置了圖片的圓角、邊框并設(shè)置了觸摸圖片時(shí)的顏色

GitHub地址
APK下載地址,去手機(jī)上體驗(yàn)吧 (?)
具體使用說(shuō)明如下
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 共同的屬性
該庫(kù)提供了一個(gè)ShapeImageView類,可以在xml當(dāng)中,也可以在代碼中設(shè)置圖片的一些屬性,
當(dāng)然這些屬性也可以在GlideImageView上面設(shè)置,具體屬性如下
Attribute 屬性 | Description 描述 |
---|---|
siv_border_color | 邊框顏色 |
siv_border_width | 邊框?qū)挾?/td> |
siv_pressed_color | 觸摸圖片時(shí)的顏色 |
siv_pressed_alpha | 觸摸圖片時(shí)的顏色透明度: 0.0f - 1.0f |
siv_radius | 圓角弧度 |
siv_shape_type | 兩種形狀類型:默認(rèn)是0:rectangle、1:circle |
下面是在xml中和代碼中設(shè)置的效果
xml中設(shè)置 | 代碼中設(shè)置 |
---|---|
一行代碼加載來(lái)自網(wǎng)絡(luò)、res、SDCard中圖片
public GlideImageView loadImage(String url, int placeholderResId);
public GlideImageView loadLocalImage(@DrawableRes int resId, int placeholderResId);
public GlideImageView loadLocalImage(String localPath, int placeholderResId);
一行代碼加載來(lái)自網(wǎng)絡(luò)、res、SDCard中圖片成圓形
public GlideImageView loadCircleImage(String url, int placeholderResId);
public GlideImageView loadLocalCircleImage(int resId, int placeholderResId);
public GlideImageView loadLocalCircleImage(String localPath, int placeholderResId);
如果你覺(jué)得上面的方法還不能滿足你,那么你可以通過(guò)下面的方法追加自己想要的屬性來(lái)加載圖片
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);
如果你還是覺(jué)得得不到滿足,好吧,我提供了GlideImageLoader類加載圖片,比如這樣加載圖片:先加載縮略圖再加載高清圖片,并監(jiān)聽(tīng)加載的進(jìn)度
private void loadImage(String image_url_thumbnail, String image_url) {
RequestOptions requestOptions = glideImageView.requestOptions(R.color.black)
.centerCrop()
.skipMemoryCache(true) // 跳過(guò)內(nèi)存緩存
.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()) // 動(dòng)畫(huà)漸變加載
.into(glideImageView);
}
該庫(kù)提供兩種監(jiān)聽(tīng)加載圖片進(jìn)度的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地址
關(guān)于我
個(gè)人郵箱:sfsheng0322@126.com