Android常用网络图片加载框架示例

Posted 事在人为,幸福从不抱怨开始!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android常用网络图片加载框架示例相关的知识,希望对你有一定的参考价值。

  1. Picasso:
    Github地址:https://github.com/square/picasso, 最新版本是2.71828,在androidStudio中gradle文件中配置:
  compile 'com.squareup.picasso:picasso:2.71828'

使用:

  /**
     * 除了网络url,其它几种需要加上对应前缀,file文件路径前缀:file:
     * content 添加前缀:content: ,Android Resource 添加:android.resource:
     * @param imageView
     */
    private void testPicasso(ImageView imageView) 
        Picasso.get()  //之前的版本是用Picasso.with(context)
                .load("url")//load 方法加载图片:可以是网络图片url或者file 路径或者content资源或者Android Resource。
                .centerCrop()//设置scaleType为centerCrop,充满ImageView 的边界,居中裁剪
                .placeholder(R.mipmap.ic_launcher)//网络请求还没有完成时显示的本地图片
                .error(R.mipmap.ic_launcher)//网络请求错误时显示的本地图片
                .resize(400,300)//设置图片尺寸
                .onlyScaleDown()//当调用了resize 方法设置图片尺寸时,调用onlyScaleDown 方法,只有当原始图片的尺寸大于我们指定的尺寸时,resize才起作用
                .fit()//fit 它会自动测量我们的View的大小,然后内部调用reszie方法把图片裁剪到View的大小(fit 还是会出现拉伸扭曲的情况,因此最好配合前面的centerCrop使用)
                .tag("tag")//请求设置tag
                .rotate(60)//设置图片旋转角度(图片在显示前,有个旋转的动画效果)
                .memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE) //设置内存缓存策略为不缓存
                .networkPolicy(NetworkPolicy.NO_CACHE,NetworkPolicy.NO_STORE)//设置磁盘缓存策略为不缓存
                .into(imageView);//显示到指定的控件上
    
  1. Glide
    开源地地址:https://github.com/bumptech/glide
    AndroidStudio中gradle文件中配置:
dependencies 
//最新版本4.8.0
   compile 'com.github.bumptech.glide:glide:3.7.0'

使用:

 public void loadImage(ImageView imageView) 
        Glide.with(getApplicationContext()) // 指定Context
                .load(url)// 指定图片的URL
                .placeholder(R.mipmap.ic_launcher)// 指定图片未成功加载前显示的图片
                .error(R.mipmap.ic_launcher)// 指定图片加载失败显示的图片
                .override(300, 300)//指定图片的尺寸
                .fitCenter()//指定图片缩放类型为
                .centerCrop()// 指定图片缩放类型为
                .skipMemoryCache(true)// 跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.NONE)//跳过磁盘缓存
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)//仅仅只缓存原来的全分辨率的图像
                .diskCacheStrategy(DiskCacheStrategy.RESULT)//仅仅缓存最终的图像
                .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存所有版本的图像
                .priority(Priority.HIGH)//指定优先级.Glide将会用他们作为一个准则,并尽可能的处理这些请求,但是它不能保证所有的图片都会按照所要求的顺序加载。优先级排序:IMMEDIATE > HIGH > NORMAL > LOW
                .into(imageView);//指定显示图片的Imageview
    

Github上最新版本使用的代码是:

 GlideApp//把之前的Glide换成了GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);

3.Fresco
提供指定控件可供加载网络图片及本地图片,支持gif格式图片。
框架地址:https://github.com/facebook/fresco
官方使用文档:https://www.fresco-cn.org/docs/index.html
个人推荐博客:https://blog.csdn.net/jxf_access/article/details/79099396

 首先在自定义的Application中onCreate方法中初始化框架:
public class GlobalApp extends Application 
	@Override
	public void onCreate() 
		super.onCreate();
		//初始化Fresco
		Fresco.initialize(this);
	

第二步:在需要加载图片的页面布局中添加控件:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/fresco_iv"
    android:layout_width="100dp"
    android:layout_height="100dp"
    fresco:placeholderImage="@drawable/my_drawable"
  />

第三步:代码中实现:

Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/logo.png");
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.fresco_iv);
draweeView.setImageURI(uri);
  1. Android-Universal-Image-Loader框架
    这个框架出现非常早,但是作者已经停止更新了。
    开源地址:https://github.com/nostra13/Android-Universal-Image-Loader
    参考博客: https://www.cnblogs.com/zqyj-y/p/5941650.html

  2. Volley框架
    谷歌出品:https://github.com/google/volley,网络请求框架,也带有加载网络图片的控件供开发使用。
    参考博客:https://blog.csdn.net/little_shengsheng/article/details/51324293

以上是关于Android常用网络图片加载框架示例的主要内容,如果未能解决你的问题,请参考以下文章

Android常用的图片加载库

Android_开源框架_AndroidUniversalImageLoader网络图片加载

android app开发中常用到哪些开源框架

Android开发常用开源框架:图片处理

Android开发常用开源框架:图片处理

Android 常用开源框架源码解析 系列 picasso 图片框架