Glide的简单封装GlideUtils,2024大厂Android社招面试题

Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView);

}

0.设置动态转换

api提供了比如:centerCrop()、fitCenter()等

public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).centerCrop().into(mImageView);

}

11.设置动态GIF加载方式

public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).asGif().into(mImageView);

}

12.设置静态GIF加载方式

public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).asBitmap().into(mImageView);

}

13.设置监听请求接口

设置监听的用处 可以用于监控请求发生错误来源,以及图片来源 是内存还是磁盘

public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) {

Glide.with(mContext).load(path).listener(requstlistener).into(mImageView);

}

14.设置要加载的内容

项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排

public static void loadImageViewContent(Context mContext, String path, SimpleTarget simpleTarget) {

Glide.with(mContext).load(path).centerCrop().into(simpleTarget);

}

15.清理磁盘缓存

public static void GuideClearDiskCache(Context mContext) {

//理磁盘缓存 需要在子线程中执行

Glide.get(mContext).clearDiskCache();

}

16.清理内存缓存

public static void GuideClearMemory(Context mContext) {

//清理内存缓存 可以在UI主线程中进行

Glide.get(mContext).clearMemory();

}

当然,我们后续肯定会功能越来越多的,我把项目开源在Github上了,为了使用起来方便自己封装了下,同时也分享以下

GlideUtils源码:

package com.liuguilin.gankclient.util;

/*

  • 项目名: GankClient

  • 包名: com.liuguilin.gankclient.util

  • 文件名: GlideUtils

  • 创建者: LGL

  • 创建时间: 2016/10/20 16:45

  • 描述: Glide封装

*/

import android.content.Context;

import android.widget.ImageView;

import com.bumptech.glide.Glide;

import com.bumptech.glide.Priority;

import com.bumptech.glide.load.engine.DiskCacheStrategy;

import com.bumptech.glide.load.resource.drawable.GlideDrawable;

import com.bumptech.glide.request.RequestListener;

import com.bumptech.glide.request.target.SimpleTarget;

public class GlideUtils {

/**

  • Glide特点

  • 使用简单

  • 可配置度高,自适应程度高

  • 支持常见图片格式 Jpg png gif webp

  • 支持多种数据源 网络、本地、资源、Assets 等

  • 高效缓存策略 支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半

  • 生命周期集成 根据Activity/Fragment生命周期自动管理请求

  • 高效处理Bitmap 使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力

  • 这里默认支持Context,Glide支持Context,Activity,Fragment,FragmentActivity

*/

//默认加载

public static void loadImageView(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).into(mImageView);

}

//加载指定大小

public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) {

Glide.with(mContext).load(path).override(width, height).into(mImageView);

}

//设置加载中以及加载失败图片

public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) {

Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView);

}

//设置加载中以及加载失败图片并且指定大小

public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) {

Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView);

}

//设置跳过内存缓存

public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView);

}

//设置下载优先级

public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView);

}

/**

  • 策略解说:

  • all:缓存源资源和转换后的资源

  • none:不作任何磁盘缓存

  • source:缓存源资源

  • result:缓存转换后的资源

*/

//设置缓存策略

public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView);

}

/**

  • api也提供了几个常用的动画:比如crossFade()

*/

//设置加载动画

public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) {

Glide.with(mContext).load(path).animate(anim).into(mImageView);

}

/**

  • 会先加载缩略图

*/

//设置缩略图支持

public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView);

}

/**

  • api提供了比如:centerCrop()、fitCenter()等

*/

//设置动态转换

public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).centerCrop().into(mImageView);

}

//设置动态GIF加载方式

public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).asGif().into(mImageView);

}

//设置静态GIF加载方式

public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) {

Glide.with(mContext).load(path).asBitmap().into(mImageView);

}

//设置监听的用处 可以用于监控请求发生错误来源,以及图片来源 是内存还是磁盘

//设置监听请求接口

public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

总结

【Android 详细知识点思维脑图(技能树)】

我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最后,赠与大家一句话,共勉!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-6SQKKKRG-1712538952727)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最后,赠与大家一句话,共勉!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值