本教程內(nèi)容來源于:http://fresco-cn.org
采用 知識(shí)共享 署名 4.0 國際 許可協(xié)議 進(jìn)行許可
Drawee 輕松支持圓角顯示,并且顯示圓角時(shí),并不復(fù)制和修改Bitmap對(duì)象,那樣太耗費(fèi)內(nèi)存。
圓角實(shí)際有2中呈現(xiàn)方式:
roundAsCircle
為trueroundedCornerRadius
設(shè)置圓角時(shí),支持4個(gè)角不同的半徑。XML中無法配置,但可在Java代碼中配置。
可使用以下兩種方式:
solid color
來繪制圓角。但是背景需要固定成指定的顏色。
在XML中指定 roundWithOverlayColor
, 或者通過調(diào)用setOverlayColor
來完成此設(shè)定。SimpleDraweeView
支持如下幾種圓角配置:
xml
<com.facebook.drawee.view.SimpleDraweeView
...
fresco:roundedCornerRadius="5dp"
fresco:roundBottomLeft="false"
fresco:roundBottomRight="false"
fresco:roundWithOverlayColor="@color/blue"
fresco:roundingBorderWidth="1dp"
fresco:roundingBorderColor="@color/red"
在創(chuàng)建 DraweeHierarchy 時(shí),可以給GenericDraweeHierarchyBuilder
指定一個(gè)RoundingParams 用來繪制圓角效果。
RoundingParams roundingParams = RoundingParams.fromCornersRadius(7f);
roundingParams.setOverlayColor(R.color.green);
// 或用 fromCornersRadii 以及 asCircle 方法
genericDraweeHierarchyBuilder
.setRoundingParams(roundingParams);
你也可以在運(yùn)行時(shí),改變圓角效果
RoundingParams roundingParams =
mSimpleDraweeView.getHierarchy().getRoundingParams();
roundingParams.setBorder(R.color.red, 1.0);
roundingParams.setRoundAsCircle(true);
mSimpleDraweeView.getHierarchy().setRoundingParams(roundingParams);
在運(yùn)行時(shí),不能改變呈現(xiàn)方式: 原本是圓角,不能改為圓圈。
當(dāng)使用BITMAP_ONLY(默認(rèn))模式時(shí)的限制:
Drawee 內(nèi)部實(shí)現(xiàn)了一個(gè)CLIPPING模式。但由于有些Canvas的實(shí)現(xiàn)并不支持路徑剪裁(Path Clipping),這個(gè)模式被禁用了且不對(duì)外開放。并且由于路徑剪裁不支持反鋸齒,會(huì)導(dǎo)致圓角的邊緣呈現(xiàn)像素化的效果。
總之,如果生成臨時(shí)bitmap的方法,所有的上述問題都可以避免。但是這個(gè)方法并不被支持因?yàn)檫@會(huì)導(dǎo)致很嚴(yán)重的內(nèi)存問題。