codecamp

Fresco 一些陷阱

一些陷阱

本教程内容来源于:http://fresco-cn.org
采用 知识共享 署名 4.0 国际 许可协议 进行许可

不要向下转换

不要试图把Fresco返回的一些对象进行向下转化,这也许会带来一些对象操作上的便利,但是也许在后续的版本中,你会遇到一些因为向下转换特性丢失导致的难以处理的问题。

不要使用getTopLevelDrawable

DraweeHierarchy.getTopLevelDrawable() 仅仅 应该在DraweeViews中用,除了定义View中,其他应用代码建议连碰都不要碰这个。

在自定义View中,也千万不要将返回值向下转换,也许下个版本,我们会更改这个返回值类型。

不要复用 DraweeHierarchies

永远不要吧DraweeHierarchy 通过 DraweeView.setHierarchy 设置给不同的View。DraweeHierarchy是由一系列Drawable组成的。在Android中, Drawable不能被多个View共享。

不要在多个DraweeHierarchy中使用同一个Drawable

原因同上。当时可以使用不同的资源ID。Android实际会创建不同的Drawable。

不要直接给 DraweeView 设置图片。

目前 DraweeView 直接继承于ImageView,因此它有 setImageBitmap, setImageDrawable 等方法。

如果利用这些方法,直接设置一个图片。内部的DraweeHierarchy就会丢失,也就无法取到image pipeline 的任何图像了。

使用DraweeView时,请不要使用任何ImageView的属性

在后续的版本中,DraweeView会直接从View派生。任何属于ImageView但是不属于View的方法都会被移除。

Fresco 自定义View
Fresco 什么是Image Pipeline
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }