Android中的Glide加载图片

时间:2022-12-17 13:40:04

注意:在Android Studio的项目的build.gradle中添加:

compile 'com.github.bumptech.glide:glide:3.6.1'

然后同步一下

目录:

  1. 使用Glide结合列表的样式进行图片加载
  2. 如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用
  3. 当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法
  4. 当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示
  5. 图片的缩放,centerCrop()和fitCenter()
  6. 显示gif动画
  7. 显示本地视频
  8. 缓存策略
  9. 优先级,设置图片加载的顺序
  10. 当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象
  11. 集成网络栈(okHttp,Volley)
 
1.使用Glide结合列表的样式进行图片加载:
        1)    如果使用的是ListView,可以直接在Adapter的getView方法中使用:                
  1. @Override
  2. public View getView(int position, View convertView, ViewGroup parent) {
  3. if (null == convertView) {
  4. //.....
  5. }
  6. Glide
  7. .with(context)
  8. .load(imageUrls[position])
  9. .into(holder.imageView);
  10. return convertView;
  11. }
 
        2)    如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用:        
  1. @Override
  2. public void onBindViewHolder(RVViewHolder holder, int position) {
  3. Glide.with(MainActivity.this)
  4. .load(args[position])
  5. .into(holder.imageView);
  6. }
       
         3)    当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法: 
  1. Glide
  2. .with(context)
  3. .load(UsageExampleListViewAdapter.eatFoodyImages[0])
  4. .placeholder(R.mipmap.ic_launcher) // can also be a drawable
  5. .into(imageViewPlaceholder);
        
        4)    当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示:
  1. Glide
  2. .with(context)
  3. .load("http://futurestud.io/non_existing_image.png")
  4. .error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded
  5. .into(imageViewError);
 
        5)    图片的缩放,centerCrop()和fitCenter():        
  1. //使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的
  2. //Height是match_parent则图片就会被拉伸填充
  3. Glide.with(MainActivity.this)
  4. .load(args[position])
  5. .centerCrop()
  6. .into(holder.imageView);
  1. //使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围
  2. //该图像将会完全显示,但可能不会填满整个 ImageView。
  3. Glide.with(MainActivity.this)
  4. .load(args[position])
  5. .fitCenter()
  6. .into(holder.imageView);
        6)    显示gif动画:
  1. Glide
  2. .with( context )
  3. .load( gifUrl )
  4. .asGif() //判断加载的url资源是否为gif格式的资源
  5. .error( R.drawable.full_cake )
  6. .into( imageViewGif );
 
        7)    显示本地视频
  1. String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
  2. Glide
  3. .with( context )
  4. .load( Uri.fromFile( new File( filePath ) ) )
  5. .into( imageViewGifAsBitmap );
        8)    缓存策略:
  1. Glide
  2. .with( context )
  3. .load( Images[0] )
  4. .skipMemoryCache( true ) //跳过内存缓存
  5. .into( imageViewInternet );
  1. Glide
  2. .with( context )
  3. .load( images[0] )
  4. .diskCacheStrategy( DiskCacheStrategy.NONE ) //跳过硬盘缓存
  5. .into( imageViewInternet );
  • DiskCacheStrategy.NONE 什么都不缓存
  • DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像
  • DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
  • DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为
        9)    优先级,设置图片加载的顺序:
    
  • Priority.LOW
  • Priority.NORMAL
  • Priority.HIGH
  • Priority.IMMEDIATE
  1. private void loadImageWithHighPriority() {
  2. Glide
  3. .with( context )
  4. .load( mages[0] )
  5. .priority( Priority.HIGH )
  6. .into( imageViewHero );
  7. }
  8. private void loadImagesWithLowPriority() {
  9. Glide
  10. .with( context )
  11. .load( images[1] )
  12. .priority( Priority.LOW )
  13. .into( imageViewLowPrioLeft );
  14. Glide
  15. .with( context )
  16. .load( images[2] )
  17. .priority( Priority.LOW )
  18. .into( imageViewLowPrioRight );
  19. }
 
        10)    当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象:
  1. //括号中的300,600代表宽和高但是未有作用
  2. SimpleTarget target = new SimpleTarget<Bitmap>(300,600) {
  3. @Override
  4. public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
  5. holder.imageView.setImageBitmap(resource);
  6. }
  7. };
  8. Glide.with(MainActivity.this)
  9. .load(args[position])
  10. .asBitmap()
  11. .into(target);
        
        11)    集成网络栈(okHttp,Volley):  
  1. dependencies {
  2. // your other dependencies
  3. // ...
  4. // Glide
  5. compile 'com.github.bumptech.glide:glide:3.6.1'
  6. // Glide's OkHttp Integration
  7. compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'
  8. compile 'com.squareup.okhttp:okhttp:2.5.0'
  9. }
  1. dependencies {
  2. // your other dependencies
  3. // ...
  4. // Glide
  5. compile 'com.github.bumptech.glide:glide:3.6.1'
  6. // Glide's Volley Integration
  7. compile 'com.github.bumptech.glide:volley-integration:1.3.1@aar'
  8. compile 'com.mcxiaoke.volley:library:1.0.8'
  9. }

Android中的Glide加载图片的更多相关文章

  1. Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案

    我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如L ...

  2. Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法

    Android ListView异步加载图片错位.重复.闪烁分析以及解决方案,具体问题分析以及解决方案请看下文. 我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图 ...

  3. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  4. Glide 加载图片

    //通过model获取到图片的url,将Url转换成bitmap对象: //设置不保存内存和硬盘缓存, 1 Glide.with(mContext).load(model.getVideoUrl()) ...

  5. RoundedImageView使用吐槽心得&lpar;RoundedImageView与Glide加载图片&comma;第一次加载无法圆角问题&rpar;

    最近使用的时候发现一个问题, RoundedImageView与Glide搭配使用的时候,第一次加载图片(内存中没有),后图片无法圆角,后来尝试各种改,最后想到了一个办法,就是让Glide加载图片的 ...

  6. Glide加载图片问题记录

    Glide加载图片相比于Picasso而言性能较好,又比Fresco轻巧,而且又支持加载gif动图,是Google 推荐.专注平滑的滚动.简单易用.可扩展的一款图片加载框架.但是使用时还是会遇到一些问 ...

  7. Glide加载图片缓存库出现——You cannot start a load for a destroyed activity

    请记住一句话:不要再非主线程里面使用Glide加载图片,如果真的使用了,请把context参数换成getApplicationContext.

  8. arcgis android 中shapefile的加载

    前言 本文为大家分享arcgis android 中shapefile的加载,默认你有java环境,懂一定的android基础知识,默认你已经安装android studio.如缺乏以上环境和知识,请 ...

  9. Glide加载图片的事例

    //获取图片的url String url = resultsEntity.getUrl(); //判断获取的图片是否存在 if (resultsEntity.getItemHeight() > ...

随机推荐

  1. Golang游戏服务器

    我对和GOLANG写MMO服务器的一些遐想: 1.沙盒(隔离性) SKYNET:原生LUA STATE作为沙盒, 进行服务器间隔离安全性高: 服务可以很容易的配置到不同节点之上. GO:估计用RECO ...

  2. C&num;正则表达式分组使用

    string s = "dfasfdasfdsa*fdasfdsafdsa"; s = "转发:dfasfdasfdsa*fdasfdsafdsa"; //s ...

  3. Android 注解的一些应用以及原理

    在这边文章之前你首先需要对java 的注解部分有一个基本的了解(不需要太过的深入). 简单来说,注解这个东西就是用于辅助我们开发java代码的,注解本身无法干扰java源代码的执行. 在android ...

  4. Unity3D为FirstPersonController添加跑步与下蹲动作

    using UnityEngine; using System.Collections; public class MyController : MonoBehaviour { ; ; ; priva ...

  5. 《Android进阶》之第三篇 深入理解android的消息处理机制

    Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 android的消息处理机制(图+源码分析)——Looper,Handler,Message an ...

  6. 【Centos7】卸载OpenJDK

    一般情况下,centos会自带OpenJDK,Hadoop的运行环境要求自己配置JRE,但在home下配置好了JRE后,使用java -version仍然看到OpenJDK,原因是系统根据$PATH路 ...

  7. Sudoku Killer

    Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...

  8. 题解-洛谷P1601 A&plus;B Problem(高精)

    https://www.luogu.org/problemnew/show/P1601(题目传送) 显然数据范围超过了long long类型,故不能简单的用两个长整型存起来相加.这里用到大数据的高精度 ...

  9. Java多线程-----线程池详解

    1. 线程池的实现原理 提交一个任务到线程池中,线程池的处理流程如下: 判断线程池里的核心线程是否都在执行任务,如果不是(核心线程空闲或者还有核心线程没有被创建)则创建一个新的工作线程来执行任务.如果 ...

  10. 第八课:不一样的链表 linux链表设计哲学 5星级教程

    这一课最后实现的链表,和普通链表不同,借鉴了linux内核链表的思想,这也是企业使用的链表. 基础介绍: 顺序表的思考 顺序表的最大问题是插入和删除需要移动大量的元素!如何解决?A:在线性表数据元素之 ...