Android - Glide

Glide:图片加载库

图片加载框架的对比 glide占明显优势

         ImageLoader:已经停止了维护

         Picasso:无法加载gif(Square公司开发)

         Glide:适用于更多的内容表现形式,快,搞笑缓存策略

         Fresco:适用于需要高性能加载大量图片的场景

 详细教程可以根据:https://mrfu.me/2016/02/27/Glide_Getting_Started/

 

实例学习:

一:加载资源图片

 1:下载glide依赖 

com.github.bumptech.glide:glide

2:在Mainifest添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />

 

3:布局文件

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/iv_test"
        />

 

4:activity

ImageView iv = (ImageView)findViewById(R.id.iv_test);
        Glide.with(this).load(R.mipmap.ic_launcher).into(iv);

运行结果

 

 

二:加载uri图片

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.net.Uri;
import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {
public static final String Resource = "android.resource://";
public static final String Slash = "/";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getImage();
    }

    public void getImage() {
        int resId = R.mipmap.ic_launcher;
        Uri uri = Uri.parse(Resource + getPackageName() + Slash + resId);
        ImageView iv = (ImageView)findViewById(R.id.iv_test);
        Glide.with(this).load(uri).into(iv);
    }
}

 

三:加载网络图片

关键代码:

        String url = "http://dmimg.5054399.com/allimg/pkm/pk/22.jpg";
        ImageView iv = (ImageView)findViewById(R.id.iv_test);
        Glide.with(this).load(url).into(iv);

 

具体:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String url = "http://dmimg.5054399.com/allimg/pkm/pk/22.jpg";
        ImageView iv = (ImageView)findViewById(R.id.iv_test);
        Glide.with(this).load(url).into(iv);
    }
}

运行结果:

 

 

 

Glide两种裁剪方式

1:fitCenter(默认)

Glide.with(this).load(url).fitCenter().into(iv1);

自适应控件, 不剪裁 ,在不超过控件的前提下,等比 缩放 到 最大 ,居中显示

2:centerCrop

Glide.with(this).load(url).centerCrop().into(iv2);

以填满整个控件为目标,等比缩放,超过控件时将被 裁剪 ( 宽高都要填满 ,所以只要图片宽高比与控件宽高比不同时,一定会被剪裁)

都是通过调用transform方法来对图片进行处理


 

Glide可以添加一些预处理,如网上图片地址失效加载本地资源

 Glide.with(MainActivity.this)
                        //图片地址
                        .load("url")
                        //图片显示大小
                        .override(150,150)
                        //剪切方式,这理选择了centerCrop
                        .centerCrop()
                        //加载时预显示的图片,占位
                        .placeholder(R.drawable.ic_launcher_background)
                        //加载失败后显示的图片
                        .error(R.drawable.ic_launcher_background)
                        //跳过内存缓存
                        .skipMemoryCache(true)
                        //磁盘缓存策略
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .into(imageView);

  

posted @ 2019-12-15 15:57  溺于Android之渊  阅读(431)  评论(0编辑  收藏  举报