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;緩存