分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!
发布了68 篇原创文章 · 获赞 87 · 访问量 3万+
我们使用Glide加载图片使用自定义對Transformations 转换器的时候,都忽略了定制变换必须实现的方法:
为了让内存缓存正常地工作你是否必须实现 equals() 和 hashCode() 方法很不幸,即使你没有复写这两個方法BitmapTransformation 和 Transformation 也能通过编译,但这并不意味着它们能正常工作
当我们重写这几个方法,刷新加载Glide 的时候图片会闪动一下网上提供的各种解决Glide 加载图片出现闪动,什么设置tag取消默认动画,没设置缓存等等解决方案都不可靠可能是以前Glide 4.0 一下的版本解决方案吧,并且网上提供的大多数转换器是没有重写 updateDiskCacheKey、 equals() / hashCode()! 这几个方法的导致我们Copy 过去使用的时候不能正常工作。
引用官网原文解决方案:
Glide 提供了很多内置的变换包括:
大多数内置的变换都有静态的 import ,这是为 API 的流畅性考虑的例如,你可以通过静态方法应用一个 FitCenter 变换:
如果你正在使用 Generated API 那么这些變换方法已经被内联了,所以使用起来甚至更为轻松:
如果你想在单次加载中应用多个变换请使用 MultiTransformation 类。
请注意你向 MultiTransformation 的构造器传入变换參数的顺序,决定了这些变换的应用顺序
尽管你的 Transformation 将几乎确定比这个示例更复杂,但它应该包含了楿同的基本元素和复写方法
请特别注意,对于任何 Transformation 子类包括 BitmapTransformation,你都有三个方法你 必须 实现它们以使得磁盘和内存缓存正确地工作:
被变换的方式,它们也必须被包含到这三个方法中
也能通过编译,但这并不意味着它们能正常工作我们正在探索一些方案,以使在 Glide 的未来版本中使用默认的 equals() 和 hashCode 方法将抛出一个编译时错误。
Transformation
的设计初衷是无状态的因此,在多个加载中复用 Transformation
应当总是安全的创建一次 Transformation
并在多个加载中使用它,通常是很好的实践
当然,你总有权利覆写默认的变换只需要一个带有 Transformation 集合的 RequestOptions 即可。另外你也可鉯通过使用 dontTransform() 确保不会自动应用任何变换。
之外你还需要为你的自定义资源类型提供一个 Transformation 。
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!
发布了68 篇原创文章 · 获赞 87 · 访问量 3万+
发布了70 篇原创文嶂 · 获赞 5 · 访问量 2万+
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。