facebook的Fresco是我見過的Android上面最好的圖片加載框架之一。但是用SimpleDraweeView來做Share Element Transition的時候出現(xiàn)了很多問題黍聂。
1.頁面跳轉(zhuǎn)的時候SimpleDraweeView不不顯示圖片
這個問題出現(xiàn)的比較早躺苦,facebook已經(jīng)有解決方案了:
在跳轉(zhuǎn)后的頁面Activity加上這段代碼
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setSharedElementEnterTransition(
DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.CENTER_CROP,
ScalingUtils.ScaleType.CENTER_CROP)); // 進(jìn)入
getWindow().setSharedElementReturnTransition(
DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.CENTER_CROP,
ScalingUtils.ScaleType.CENTER_CROP)); // 返回
}
2.Android 7.0以上返回跳轉(zhuǎn)前頁面完成過場動畫之后SimpleDraweeView不顯示圖片
這個問題我嘗試在onActivityResult里面進(jìn)行監(jiān)聽檢測是否SimpleDraweeView的狀態(tài)被設(shè)為INVISIBLE或者GONE,并將其重新設(shè)置為VISIBLE但是并沒有用产还。最后在Fresco的issue里面找到其他開發(fā)者提供的解決方案:
在跳轉(zhuǎn)之前監(jiān)聽共享動畫的結(jié)束回調(diào)匹厘,并將共享元素重新設(shè)置為可見
setExitSharedElementCallback(new SharedElementCallback() {
@Override
public void onSharedElementEnd(List<String> sharedElementNames,
List<View> sharedElements,
List<View> sharedElementSnapshots) {
super.onSharedElementEnd(sharedElementNames, sharedElements,
sharedElementSnapshots);
for (View view : sharedElements) {
if (view instanceof SimpleDraweeView) {
view.setVisibility(View.VISIBLE);
}
}
}
});
歡迎各位加入技術(shù)討論群,一起論技術(shù)脐区,侃大山愈诚。qq群:295456349