当前位置: 首页 > news >正文

外国公司做网站公司商标设计图

外国公司做网站,公司商标设计图,html网站源代码下载,开发区人才网最新招聘信息1. Glide概述 Glide是一款图片处理的框架#xff0c;从框架设计的角度出发#xff0c;最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象#xff0c;里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBu…1. Glide概述 Glide是一款图片处理的框架从框架设计的角度出发最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBuilder来创建请求通过它传入各种各样的参数回调监听加载失败后的设置等等。最终还要创建一个RequestManager进行统一的管理。因为请求肯定不可能只有一个比如开始、暂停、关闭、清除请求等操作。完成某个请求后再通过ImageViewTarget设置给图片控件。 2. Glide的用法 2.1 使用Glide 导入依赖 implementation com.github.bumptech.glide:glide:4.15.1加载网络地址资源 ImageView image1 findViewById(R.id.image_1);Glide.with(this).load(https://pic.ntimg.cn/file/20200605/23605973_173021196899_2.jpg).fitCenter().into(image1);加载Drawable资源 Glide.with(this).load(R.drawable.draw_shape1).placeholder(R.drawable.draw_shape2).error(R.drawable.draw_shape2).into(image1);4. 从Uri中加载资源 Uri uri Uri.parse(android.resource:// getPackageName() / R.drawable.ic_launcher); tv_title3.setText(从 Uri 中加载); Glide.with(this).load(uri) .placeholder(R.drawable.ic_launcher) .error(R.mipmap.ic_launcher_round) .dontAnimate() //加载没有任何动画 .into(iv_3); 2.2 Glide相关方法 占位符 placeholder()在图片资源未加载完成时占位符会在ImageView里面显示错误占位符 error()在图片资源加载失败时占位符会在Imageview里显示 还有一个就是错误占位符error()接受的参数只能是已经初始化的 drawable 对象或者指明它的资源(R.drawable.)。图片淡入动画属性 crossFade()动态图的添加dontAnimate()直接显示图片没有淡入淡出的效果。缩放图像 centerCrop()是一个裁剪技术即缩放图像让它填充到 ImageView 界限内并且裁剪额外的部分。ImageView 可能会完全填充但图像可能不会完整显示。缩放图像 fitCenter()是裁剪技术即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围。该图像将会完全显示但可能不会填满整个 ImageView。 也可以加载GIF图像只需要load的是GIF图片的链接即可。 asBitmap()如果GIF图片太大导致OOM异常。那么通过asBitmap()可以转成常规图片 3. Glide图片加载流程 Glide.get(context)方法中对Glide类上锁 Glide.with(this).load(uri) .into(iv_3);3.1 with() 主要进行一些Glide的初始化工作以及将context生命周期注入Glide。 会创建Bitmap池、内存缓存、磁盘缓存和Glide对象。最主要的任务是通过传入的参数类型来获取RequestManager对象。 NonNull public static RequestManager with(NonNull Context context) {return getRetriever(context).get(context); }3.2 load() 根据需要 加载资源完成一些参数的配置。 比如从url、uri、文件获取等等还会创建一个RequestBuilder对象创建一个目标为Drawable的图片加载请求。 public RequestBuilderDrawable load(Nullable String string) {return asDrawable().load(string); }3.3 into() into()方法的作用就是从缓存或者网络上获取图片资源并且将图片进行解析展示。 //RequestBuilder.into() public ViewTargetImageView, TranscodeType into(NonNull ImageView view) {.....//返回ViewTarget对象return into(//glideContext为GlideContext类型glideContext.buildImageViewTarget(view, transcodeClass),targetListener null,requestOptions,//含有绑定主线程Handler的线程池Executors.mainThreadExecutor()); }准备过程 首先根据传入View的缩放类型 设置 一个裁剪策略配置相应的requestOptions存配置requestOptions里面保存着所有RequestManager中的配置。缓存策略、裁剪大小、动画效果、优先级…接着调用这些配置去创建一个Request对象并将View包装成ViewTarget传入Request将Request和ViewTarget绑定起来 调用方法执行request 开始加载之前要先判断Glide对应的生命周期是否处于暂停 如果没暂停。判断传入的URL是否为null。如果为null则抛出异常然后使用占位图显示在目标位置。不为null判断是否设置了宽高。没有设置则测量出宽高最后调用Engine的load方法真正开始加载的逻辑。 加载的过程 Engine的load方法会先创建出一个EngineKey 先从内存缓存中寻找图片 查看弱引用HashMap中有没有获取到则回调并将图片资源展示出来没找到则去LruCache中获取获取到则将它从LruCache中删除放入到弱引用HashMap中并显示回调。 都没有的话则去磁盘缓存中寻找。 去磁盘缓存DiskLruCache中寻找。如果还是拿不到就发起网络请求获取图片资源。 资源的解析和图片显示过程 从网络请求获取到图片资源后要生成一个对应的Bitmap生成之前会先去Bitmap缓存池中查找是否有等大的Bitmap如果有则直接复用。没有的话就创建一个然后将该Bitmap放到缓存池以便下一次复用。并且把数据 根据磁盘缓存策略 存储到 硬盘缓存DiskLruCache中最后将数据存到弱引用HashMap中并回调显示。 4. Glide缓存机制 Glide的缓存都通过一个key来实现。也就是EngineKey对象EngineKey通过请求的URL、View的宽高、屏幕的尺寸大小、请求的签名等等生成这个key。获取缓存之前都会先创建这个EngineKeyEngineKey就是判定是否可以实现图片复用的依据。 4.1 Glide的缓存分类 Glide的缓存分为内存缓存和磁盘缓存 内存缓存弱引用缓存HashMap 和 LruCache。分为取缓存和存缓存两方面来说明磁盘缓存DiskLruCache 4.2 取缓存加载图片的过程 取缓存顺序弱引用HashMap - LruCache - DiskLruCache - 找不到通过HttpUrlConnection新建网络请求去获取图片。 先去弱引用HashMap中获取 成功则将它的acquired引用计数1。失败则这个缓存可能被GC从HashMap中将其移除。 然后去LruCache中寻找 成功将缓存从LruCache中移除并将其加入到弱引用缓存HashMap中并将其acquired1。失败返回null 去硬盘缓存DiskLruCache中寻找 成功先找转码后的图片再找原图。失败网络请求 通过HttpUrlConnection新建网络请求去获取图片 成功将图片缓存到磁盘和内存中以便后续复用。 4.3 存缓存 关于弱引用HashMap 获取到图片资源后将其存到弱引用缓存中回调到主线程显示图片资源。 如果弱引用缓存中某个缓存的acquire计数渐渐变为0那么将它从HashMap弱引用中移除唯一特殊的地方如果允许内存缓存的话加入到LruCache中。 关于LruCache 如果从LruCache中获取成功的话将缓存从LruCache中移除并将其加入到弱引用缓存HashMap中并将其acquired1。 关于硬盘缓存DiskLruCache 在网络请求后如果有结果则必然会存入到硬盘中。不过会判断是否允许缓存原始图片。 允许就缓存原图不允许就缓存转码后的图 Glide的磁盘缓存策略默认情况下会根据加载图片的来源类型采用最佳的缓存策略。diskCacheStrategy设置的缓存模式既影响读取也影响存储。是在衡量所占磁盘空间大小和获取图片的成本两者所做的一个居中选择。如果加载的是远程图片仅会存储原始图片不存储转换过后的图片因为下载远程图片相比调整磁盘上已经存在的数据要昂贵得多。如果加载的是本地图片则仅会存储转换过后的图片因为即使需要再次生成另一个尺寸或类型的图片取回原始图片也很容易。 Glide最终缓存到磁盘的图片类型原始图片和将原始图片进行压缩裁剪变化等各种转换操作后得到的图片。 4.4 为什么使用弱引用缓存 5. 内存清理机制 Glide提供了缓存内存的自动清理机制。Glide初始化的时候会默认向Application注册一个监听器用于接收系统下发的内存状态变化的事件通知当接收到后会自动触发对 memoryCache、bitmapPool 和 arrayPool 的清理工作。 6. 图片框架 6.1 设计一个图片请求框架 一款图片处理的框架从框架设计的角度出发最基本要实现的就是 加载图片 和 展示。 把一个图片请求封装成一个Request对象里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBuilder来创建请求通过它传入各种各样的参数回调监听加载失败后的设置等等。最终还要创建一个RequestManager进行统一的管理。因为请求肯定不可能只有一个比如开始、暂停、关闭、清除请求等操作。RequestManager除了统一管理Request以外还要作为监听生命周期的载体。根据生命周期对Request做出相应的操作初始化完Request、Request和生命周期监听等我们就可以执行具体的获取图片请求了如果每次都从网络上获取会导致网络资源的浪费万一网络不好还要加载很久 所以还需要设计一个缓存机制。比如内存缓存磁盘缓存Bitmap池缓存等。对于内存缓存我们可以用现在比较成熟的LRUcache把最新使用过的图片简单缓存加载图片显示时先去内存缓存找找不到再去磁盘缓存找如果还是没有再进行网络请求。获取到图片后再更新到对应的缓存区获取到图片后设计剪裁策略、动画效果等如果有等大的Bitmap还可以复用Bitmap池里的再设计一个ImageViewTarget模块 把图片设置到对应的控件上。 6.2 图片加载库 Android目前主流的图片加载库包括Glide、Picasso和Fresco。 Glide由 Google 开源的一个图片加载库是一款快速高效的 Android 开源媒体管理和图像加载框架它将媒体解码内存和磁盘缓存以及资源池包装成简单易用的接口 优点 支持多样化媒体加载。它支持 Gif、WebP、缩略图甚至是 Video。生命周期集成高效的缓存策略。 缺点 使用方法复杂实现方法较多。使用较 Fresco 简单但性能加载速度 缓存却比不上 Fresco。 Fresco由 Facebook 开源的用于管理图像及其使用内存的 Android 库 优点 大大减少了 OOM 的发生Facebook 在底层使用了 C 技术解决图片缓存问题几乎全部功能都能在 XML 文件中直接制定 缺点 使用方法复杂依赖包大(2-3M) Picasso由 Square 公司开源的一个适用于 Android 的强大图像下载和缓存库 优点 使用简单代码简洁与 Square 公司的其他开源库如 Retrofit 或者 OkHttp 搭配使用兼容性会更好些 缺点 功能较为单一自身无实现 本地缓存不支持 Gif 7. 相关问题 7.1 为什么使用Glide 7.2 Glide的缓存机制是什么样的 上文取缓存、存换存的过程。 7.3 Glide是如何管理生命周期的 主要进行一些Glide的初始化工作以及将context生命周期注入Glide。 那么不管 ImageView 的载体是 Activity 还是 Fragment我们都可以向其注入一个无 UI 界面的 SupportRequestManagerFragment以此来监听载体在整个生命周期内活跃状态的变化 7.4 如果图片资源变了url没有变怎么处理 Glide取缓存的key是基于请求的url的请求的签名、Imageview的宽高等参数。如果这些都相同那么下次获取图片的时候就先去缓存中找。这样有一个问题就是我们图片资源换了但是没有换url那么获取图片的时候是有可能获取到之前缓存中的旧图片这样就出现了问题。
http://www.zqtcl.cn/news/393644/

相关文章:

  • 怎么提升网站收录商品网页制作
  • 做网站建设的平台wordpress5.0发布
  • 站长工具a级查网站域名
  • 免费做网站电话手机开发者模式打开有什么影响
  • 上海免费网站建站模板毕节做网站优化
  • 影响网站建设的关键点手机网站制作app
  • 商务网站建设的流程深圳模板网站建设案例
  • 做中英文网站多少钱方维制网站
  • 做一个信息发布网站要多少钱开发小程序多少钱一个
  • 山东网站设计网站关键词设置技巧
  • 做网站服务怎么赚钱产品展示型的网站功能有哪些
  • 丹东网站制作宁波网站建设公司制作网站
  • 南宁建设工程质量网站九江网站建设九江
  • 永州市住房和城乡建设厅网站服务器可以做几个网站
  • 哪里学网站建设与管理做移动端电影网站
  • 境外企业网站推广大冶市建设局网站
  • 户网站建设的不全.阿里巴巴国际站
  • 定制手机壳的网站能在家做的兼职的网站
  • 温州营销型网站建设郴州网络推广公司
  • asp.net 做网站源代码网站怎么做配置文件夹
  • 网站建设云尚网络wordpress首页flash
  • 北京优化网站宁波网络营销策划公司
  • 网站建设项目前分析电商运营一般要学多久
  • 哪个网站可以做卖房网站菜单模板
  • 网站推广渠道特点郑州百度推广外包
  • 合肥高端网站建设设计公司wordpress 多语言主题
  • 北京工程工程建设交易信息网站wordpress 角色 功能
  • 做购物网站有什么要求吗wordpress查看访问量
  • 多城市网站设计阿里云网站访问不了怎么办
  • 南岗哈尔滨网站建设开发小程序多少费用