您的位置:首页 > 移动开发 > Android开发

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

2017-05-11 19:51 369 查看
编写不易,如有转载,请声明出处: 梦回河口: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中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息