diff --git a/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/GirlAdapter.java b/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/GirlAdapter.java index 8cc594a..dc23ffc 100644 --- a/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/GirlAdapter.java +++ b/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/GirlAdapter.java @@ -37,7 +37,7 @@ public int getLayoutId() { public void onBindViewHolder(ViewHolder holder, int position) { GankResults.Item item = data.get(position); - ILFactory.getLoader().loadNet(holder.ivGirl, item.getUrl(), null); + ILFactory.getLoader().loadNet(context, holder.ivGirl, item.getUrl(), null); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/HomeAdapter.java b/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/HomeAdapter.java index 14398e6..90d5080 100644 --- a/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/HomeAdapter.java +++ b/app/src/main/java/cn/droidlover/xdroidmvp/demo/adapter/HomeAdapter.java @@ -63,7 +63,7 @@ public void onClick(View v) { holder.ivPart.setVisibility(View.VISIBLE); holder.ivVedio.setVisibility(View.GONE); - ILFactory.getLoader().loadNet(holder.ivPart, item.getUrl(), null); + ILFactory.getLoader().loadNet(context, holder.ivPart, item.getUrl(), null); holder.tvItem.setText("瞧瞧妹纸,扩展扩展视野......"); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/res/layout/adapter_girl.xml b/app/src/main/res/layout/adapter_girl.xml index 97d473d..10a36d3 100644 --- a/app/src/main/res/layout/adapter_girl.xml +++ b/app/src/main/res/layout/adapter_girl.xml @@ -13,6 +13,6 @@ android:layout_width="match_parent" android:layout_height="200dp" android:adjustViewBounds="true" - android:scaleType="fitXY" /> + android:scaleType="centerCrop" /> \ No newline at end of file diff --git a/build.gradle b/build.gradle index b5098c3..45e61a8 100644 --- a/build.gradle +++ b/build.gradle @@ -21,13 +21,13 @@ buildscript { allprojects { repositories { - jcenter() - maven { url "https://jitpack.io" } mavenCentral() maven { url 'https://maven.google.com/' name 'Google' } + jcenter() + maven { url "https://jitpack.io" } } } diff --git a/conf.gradle b/conf.gradle index d8a7af6..49b17af 100644 --- a/conf.gradle +++ b/conf.gradle @@ -1,7 +1,7 @@ ext { android = [ - compileSdkVersion: 26, + compileSdkVersion: 27, minSdkVersion : 15, targetSdkVersion : 26, @@ -24,7 +24,8 @@ ext { "butterknife" : "com.jakewharton:butterknife:8.4.0", "butterknife-apt" : "com.jakewharton:butterknife-compiler:8.4.0", "eventbus" : "org.greenrobot:eventbus:3.0.0", - "glide" : "com.github.bumptech.glide:glide:3.7.0", + "glide" : "com.github.bumptech.glide:glide:4.7.1", + "glide-compiler" : "com.github.bumptech.glide:compiler:4.7.1", "picasso" : "com.squareup.picasso:picasso:2.5.2", "xrecyclerview" : "com.github.limedroid:ARecyclerView:v1.2.3", "avi-loading" : "com.wang.avi:library:1.0.2", diff --git a/mvp/build.gradle b/mvp/build.gradle index c4bbb7f..a1d9d61 100644 --- a/mvp/build.gradle +++ b/mvp/build.gradle @@ -32,6 +32,7 @@ dependencies { api rootProject.ext.dependencies["xrecyclerview"] api rootProject.ext.dependencies["butterknife"] api rootProject.ext.dependencies["glide"] + annotationProcessor rootProject.ext.dependencies["glide-compiler"] api rootProject.ext.dependencies["gson"] api rootProject.ext.dependencies["rxandroid"] diff --git a/mvp/proguard-pro/proguard-glide.pro b/mvp/proguard-pro/proguard-glide.pro index e1585c6..ec3404c 100644 --- a/mvp/proguard-pro/proguard-glide.pro +++ b/mvp/proguard-pro/proguard-glide.pro @@ -3,7 +3,8 @@ -keep public class * implements com.bumptech.glide.module.GlideModule --keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { - **[] $VALUES; - public *; +-keep public class * extends com.bumptech.glide.module.AppGlideModule +-keep public enum com.bumptech.glide.load.ImageHeaderParser$** { + **[] $VALUES; + public *; } \ No newline at end of file diff --git a/mvp/src/main/java/cn/droidlover/xdroidmvp/imageloader/GlideLoader.java b/mvp/src/main/java/cn/droidlover/xdroidmvp/imageloader/GlideLoader.java index 5864f1b..846f4d4 100644 --- a/mvp/src/main/java/cn/droidlover/xdroidmvp/imageloader/GlideLoader.java +++ b/mvp/src/main/java/cn/droidlover/xdroidmvp/imageloader/GlideLoader.java @@ -3,18 +3,21 @@ import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; +import android.support.annotation.Nullable; import android.widget.ImageView; -import com.bumptech.glide.DrawableTypeRequest; import com.bumptech.glide.Glide; +import com.bumptech.glide.Priority; import com.bumptech.glide.RequestManager; import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; -import com.bumptech.glide.request.animation.GlideAnimation; +import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.transition.Transition; import java.io.File; +import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; + /** * Created by wanglei on 2016/11/28. */ @@ -22,45 +25,62 @@ public class GlideLoader implements ILoader { @Override - public void init(Context context) { + public void init(Context mContext) { + + } + private RequestManager getRequestManager(Context context) { + if (context instanceof Activity) { + return Glide.with((Activity) context); + } + return Glide.with(context); + } + + private void load(Context context, Object model, ImageView target, Options options) { + if (options == null) options = Options.defaultOptions(); + RequestOptions requestOptions = new RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .placeholder(options.loadingResId) + .error(options.loadErrorResId) + .priority(Priority.HIGH); + + getRequestManager(context) + .load(model) + .apply(requestOptions) + .transition(withCrossFade()) + .into(target); } @Override - public void loadNet(ImageView target, String url, Options options) { - load(getRequestManager(target.getContext()).load(url), target, options); + public void loadNet(Context context, ImageView target, String url, Options options) { + load(context, url, target, options); } @Override public void loadNet(Context context, String url, Options options, final LoadCallback callback) { - DrawableTypeRequest request = getRequestManager(context).load(url); if (options == null) options = Options.defaultOptions(); - - if (options.loadingResId != Options.RES_NONE) { - request.placeholder(options.loadingResId); - } - if (options.loadErrorResId != Options.RES_NONE) { - request.error(options.loadErrorResId); - } - - wrapScaleType(request, options) - .diskCacheStrategy(DiskCacheStrategy.SOURCE) - .crossFade() - .into(new SimpleTarget() { + RequestOptions requestOptions = new RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .placeholder(options.loadingResId) + .error(options.loadErrorResId) + .priority(Priority.HIGH); + + getRequestManager(context) + .load(url) + .apply(requestOptions) + .transition(withCrossFade()) + .into(new SimpleTarget() { @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); - if (callback != null) { - callback.onLoadFailed(e); - } + public void onLoadFailed(@Nullable Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); } @Override - public void onResourceReady(GlideBitmapDrawable resource, GlideAnimation glideAnimation) { - if (resource != null && resource.getBitmap() != null) { + public void onResourceReady(Drawable resource, Transition transition) { + if (resource != null) { if (callback != null) { - callback.onLoadReady(resource.getBitmap()); + callback.onLoadReady(resource); } } } @@ -69,18 +89,18 @@ public void onResourceReady(GlideBitmapDrawable resource, GlideAnimation