Glide概述
有些朋友覺得Glide 4相對于Glide 3改動非常大评姨,其實不然帮坚。之所以大家會有這種錯覺盏道,是因為你將Glide 3的用法直接搬到Glide 4中去使用稍浆,結(jié)果IDE全面報錯,然后大家可能就覺得Glide 4的用法完全變掉了猜嘱。
其實Glide 4相對于Glide 3的變動并不大衅枫,只是你還沒有了解它的變動規(guī)則而已。一旦你掌握了Glide 4的變動規(guī)則之后朗伶,你會發(fā)現(xiàn)大多數(shù)Glide 3的用法放到Glide 4上都還是通用的弦撩。
我對Glide 4進行了一個大概的研究之后,發(fā)現(xiàn)Glide 4并不能算是有什么突破性的升級论皆,而更多是一些API工整方面的優(yōu)化益楼。相比于Glide 3的API,Glide 4進行了更加科學(xué)合理地調(diào)整点晴,使得易讀性感凤、易寫性、可擴展性等方面都有了不錯的提升粒督。但如果你已經(jīng)對Glide 3非常熟悉的話陪竿,并不是就必須要切換到Glide 4上來,因為Glide 4上能實現(xiàn)的功能Glide 3也都能實現(xiàn)屠橄,而且Glide 4在性能方面也并沒有什么提升族跛。但是對于新接觸Glide的朋友而言闰挡,那就沒必要再去學(xué)習(xí)Glide 3了,直接上手Glide 4就是最佳的選擇了礁哄。
直接上代碼嘍
【build.gradle】先來兩個依賴:
implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
【MainActivity】類具體代碼如下:
package com.xyxy.demot;
import android.annotation.SuppressLint;
import android.graphics.PointF;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.ImageViewState;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
import java.io.File;
public class MainActivity extends AppCompatActivity {
private SubsamplingScaleImageView mageView;
@SuppressLint("CheckResult")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String sUrl = "https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1532588239&di=78b4c6bde1cf9d1df89562241b547e72&src=http://p2.qhimg.com/t011fc13354f12d1a46.jpg";
mageView = (SubsamplingScaleImageView) findViewById(R.id.imageview);
mageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM);
mageView.setMinScale(1.0F);
//下載圖片保存到本地
Glide.with(this).load(sUrl).downloadOnly(new SimpleTarget<File>() {
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {
// 將保存的圖片地址給SubsamplingScaleImageView,這里注意設(shè)置ImageViewState設(shè)置初始顯示比例
mageView.setImage(ImageSource.uri(Uri.fromFile(resource)), new ImageViewState(2.0F, new PointF(0, 0), 0));
}
});
}}
【xml】類具體代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E61b1919">
<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="match_parent" /></LinearLayout>
【AndroidManifest.xml】可別忘啦INTERNET:
<uses-permission android:name="android.permission.INTERNET"/>
顯示超長圖
Glide.with(context).load(url).downloadOnly(new SimpleTarget<File>() {
@Override
public void onResourceReady(File resource, Transition<? super File> transition) {
Uri uri = Uri.fromFile(resource);
imageView.setImageURI(uri);
}
});