Android中图片加载框架Glide的使用

来源:互联网 发布:免费家长控制软件 编辑:程序博客网 时间:2024/05/21 17:18

编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/71683700

Picasso和Glide图片加载框架的对比:

  Google推荐的图片加载库Glide介绍 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2650.html

关于Glide的优秀博客:

  Android图片加载库:最全面解析Glide用法 http://www.jianshu.com/p/c3a5518b58b2
  Glide使用详解 http://blog.csdn.net/shangmingchao/article/details/51125554
  Glide 一个专注于平滑滚动的图片加载和缓存库 http://www.jianshu.com/p/4a3177b57949
  Android图片加载框架最全解析 http://blog.csdn.net/guolin_blog/article/details/53759439?utm_source=tuicool&utm_medium=referral
  Glide https://mrfu.me/2016/02/27/Glide_Getting_Started/

Demo展示图片

这里写图片描述

布局代码

// (layout)activity_main.xml<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">    <ImageView        android:id="@+id/imageView"        android:layout_margin="10dp"        android:layout_width="match_parent"        android:layout_height="match_parent"/></RelativeLayout>----------------------------------------------------------------------------------------//(menu)main.xml<menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/fromInternet"        android:showAsAction="never"        android:title="fromInternet"/>    <item        android:id="@+id/fromURL"        android:showAsAction="never"        android:title="fromURL"/>    <item        android:id="@+id/loadGif"        android:showAsAction="never"        android:title="loadGif"/>    <item        android:id="@+id/playMp4"        android:showAsAction="never"        android:title="playMp4"/>    <item        android:id="@+id/asBitmap"        android:showAsAction="never"        android:title="asBitmap"/>    <item        android:id="@+id/override"        android:showAsAction="never"        android:title="override"/>    <item        android:id="@+id/fallback"        android:showAsAction="never"        android:title="fallback"/>    <item        android:id="@+id/thumbnail"        android:showAsAction="never"        android:title="thumbnail"/>    <item        android:id="@+id/cache"        android:showAsAction="never"        android:title="cache"/></menu>

activity代码

  注:不要忘了设置网络权限

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

  添加Gradle依赖

compile 'com.github.bumptech.glide:glide:3.8.0'
import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.Menu;import android.view.MenuItem;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.bumptech.glide.load.engine.DiskCacheStrategy;import java.net.MalformedURLException;import java.net.URL;import static com.test.glidedemo.R.id.imageView;public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    private Context mContext = MainActivity.this;    private ImageView mImageView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView(){        mImageView = (ImageView) findViewById(imageView);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main,menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()){            case R.id.fromInternet:                // 加载网络图片                Glide.with(mContext)                        .load("http://img.noen.com.cn//2017/05/2e9d0d4fef0d68b.jpg")                        // 加载中的显示图片                        .placeholder(R.mipmap.loading)                        // 加载错误时的显示图片                        .centerCrop()//                        .fitCenter()                        .error(R.mipmap.error)                        .into(mImageView);                break;            case R.id.fromURL:                // 通过Url获取图片                URL url = null;                try {                    url = new URL("http://img.noen.com.cn//2017/05/afd9fb6fca62030.jpg");                } catch (MalformedURLException e) {                    e.printStackTrace();                }                Glide.with(mContext)                        .load(url)                        .into(mImageView);                // 还可以加载本地图片,加载应用资源,加载二进制流,加载Uri对象等//                // 加载本地图片//                File file = new File(getExternalCacheDir() + "/image.jpg");//                Glide.with(this).load(file).into(imageView);////                // 加载应用资源//                int resource = R.drawable.image;//                Glide.with(this).load(resource).into(imageView);////                // 加载二进制流//                byte[] image = getImageBytes();//                Glide.with(this).load(image).into(imageView);////                // 加载Uri对象//                Uri imageUri = getImageUri();//                Glide.with(this).load(imageUri).into(imageView);                break;            case R.id.loadGif:                //加载Gif图,Picasso无法加载                Glide.with(mContext)                        .load("http://s1.dwstatic.com/group1/M00/E9/72/7c70b26caff8a75476612b8e8c6d4310.gif")                        // 加载中的显示图片                        .placeholder(R.mipmap.loading)                        // 加载错误时的显示图片                        .error(R.mipmap.error)                        .into(mImageView);                break;            case R.id.playMp4:                // 经测试,Glide不能加载mp4文件                Glide.with(mContext)                        .load(R.raw.a)                        // 加载中的显示图片                        .placeholder(R.mipmap.loading)                        // 加载错误时的显示图片                        .error(R.mipmap.error)                        .into(mImageView);                break;            case R.id.asBitmap:                // 只允许加载静态图片                Glide.with(mContext)                        .load("http://s1.dwstatic.com/group1/M00/E9/72/7c70b26caff8a75476612b8e8c6d4310.gif")                        // 只允许加载静态图片                        .asBitmap()                        // 只允许加载动态图片//                        .asGif()                        // 加载中的显示图片                        .placeholder(R.mipmap.loading)                        // 加载错误时的显示图片                        .error(R.mipmap.error)                        .into(mImageView);                break;            case R.id.override:                // 裁剪图片                Glide.with(mContext)                        .load("http://img.noen.com.cn//2017/05/2e9d0d4fef0d68b.jpg")//                        .load("https://b-ssl.duitang.com/uploads/item/201703/12/20170312230505_cfya3.jpeg")                        // 只允许输入像素值                        .override(80,80)                        // 加载中的显示图片                        .placeholder(R.mipmap.loading)                        // 加载错误时的显示图片                        .error(R.mipmap.error)                        .into(mImageView);                break;            case R.id.fallback:                // 加载url为空指针的时候默认显示的图片                String picUrl = null;                Glide.with(mContext)                        .load(picUrl)                        .placeholder(R.mipmap.loading)                        .error(R.mipmap.pic)                        .fallback( R.mipmap.pic)                        .centerCrop()                        .into(mImageView);                break;            case R.id.thumbnail:                // 加载缩略图方式1:先加载原图尺寸的1/10,当加载完成后显示全图                Glide.with(mContext)                        .load("https://b-ssl.duitang.com/uploads/item/201605/09/20160509172416_aAFPC.jpeg")                        .placeholder(R.mipmap.loading)                        .error(R.mipmap.error)                        .fallback( R.mipmap.pic)                        .centerCrop()                        //淡入显示,注意:如果设置了这个,则必须要去掉asBitmap,crossFade(int duration)设置淡入显示持续时间                        .crossFade()                        .thumbnail(0.1f)                        .into(mImageView);//                // 加载缩略图方式2:以路径的方式加载缩略图,当加载完成后显示全图//                DrawableRequestBuilder<Integer> thumbnailRequest = Glide//                        .with(this)//                        .load(R.mipmap.pic);////                Glide.with(mContext)//                        .load("https://b-ssl.duitang.com/uploads/item/201605/09/20160509172416_aAFPC.jpeg")//                        .placeholder(R.mipmap.loading)//                        .error(R.mipmap.error)//                        .fallback( R.mipmap.pic)//                        .centerCrop()//                        //淡入显示,注意:如果设置了这个,则必须要去掉asBitmap,crossFade(int duration)设置淡入显示持续时间//                        .crossFade()//                        .thumbnail(thumbnailRequest)//                        .into(mImageView);                break;            case R.id.cache:                // 内存缓存                Glide.with(mContext)                        .load("https://b-ssl.duitang.com/uploads/item/201604/20/20160420173554_GtYFa.thumb.700_0.jpeg")                        .placeholder(R.mipmap.loading)                        .error(R.mipmap.error)                        .fallback( R.mipmap.pic)                        .centerCrop()                        //淡入显示,注意:如果设置了这个,则必须要去掉asBitmap,crossFade(int duration)设置淡入显示持续时间                        .crossFade()                        //跳过内存缓存                        .skipMemoryCache(true)                        //保存最终图片                        .diskCacheStrategy(DiskCacheStrategy.RESULT)//                        DiskCacheStrategy.NONE:什么都不缓存//                        DiskCacheStrategy.SOURCE:仅缓存原图(全分辨率的图片)//                        DiskCacheStrategy.RESULT:仅缓存最终的图片,即修改了尺寸或者转换后的图片//                        DiskCacheStrategy.ALL:缓存所有版本的图片,默认模式                        .thumbnail(0.1f)                        .into(mImageView);                break;                // 其他图片的高斯模糊、添加圆角、度灰、圆形图片等效果更同Picasso            default:                break;        }        return super.onOptionsItemSelected(item);    }}

Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9839992


———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-

0 0