dependencies { //glide compile 'com.github.bumptech.glide:glide:4.6.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1' }
Glide4.0要求使用sdk api级别为 27,因此须要将项目的sdk为27,若是配置后仍是报java.lang.NoSuchMethodError: No static method这个错误,你再检查下你的v4和v7包,这个依赖也要升到27,下面贴出个人配置java
com.android.support:appcompat-v7:27.0.2'
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Glide.with(fragment) .load(myUrl) .into(imageView);
几种占位符android
加载方式git
这里指的是好比咱们得到的是一张灰色的正方形图片,当是咱们最后须要显示的是圆角红色图片,这个时候就能够进行多重变换,这里就须要用到 transform这个方法,现将图片变成圆的,再将图片背景变成红色,Glide给咱们提供了圆形图片的方法 new CircleCrop(),这里推荐一个glide自定义库,基本上大部分的变化已经帮咱们实现了 https://github.com/wasabeef/glide-transformationsgithub
GlideApp.with(activity) .load("https://img3.doubanio.com/lpic/s23119932.jpg") .transform(new MultiTransformation<Bitmap>(new FitCenter(),new CircleCrop(),new CenterInside())) //咱们能够自定义变化 .placeholder(R.drawable.ic_launcher_background) .into(image_3);
在v4当中,它的动画是和你要加载的资源类型决定的,因此若是是bitmap就用api
GlideApp.with(activity) .load("https://img3.doubanio.com/lpic/s23119932.jpg") .placeholder(R.drawable.ic_launcher_background) .transition(DrawableTransitionOptions.withCrossFade()) //加载系统的动画 .into(image_4); GlideApp.with(activity) .load("https://img3.doubanio.com/lpic/s23119932.jpg") .placeholder(R.drawable.ic_launcher_background) .transition(GenericTransitionOptions.with(android.R.anim.slide_in_left)) //加载anim动画 .into(image_5);
Glide的默认时从内存中不使用动画的,这个问题能够经过添加new RequestListener监听实现它的onResourceready()这个方法去实现android-studio
RequestBuilder<Drawable> requestBuilder = Glide.with(activity) .load("https://img3.doubanio.com/lpic/s23119932.jpg"); requestBuilder .listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { //若是是从缓存加载,设置动画效果 image_1.startAnimation(AnimationUtils.loadAnimation(activity, android.R.anim.slide_in_left)); Log.d("onResourceReady", "in put " + isFirstResource); return false; } }) .transition(GenericTransitionOptions.with(android.R.anim.slide_in_left)) .into(image_1);
而后这里有个小tips须要注意: 关于动画只加载一次的问题,要使用startAnimation启动动画而不是setAnimation;缓存