facebook的Fresco是我見過的Android上面最好的圖片加載框架之一。但是用SimpleDraweeView來做Share Element Transition的時候出現(xiàn)了很多問題。
1.頁面跳轉的時候SimpleDraweeView不不顯示圖片
這個問題出現(xiàn)的比較早,facebook已經(jīng)有解決方案了:
在跳轉后的頁面Activity加上這段代碼
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setSharedElementEnterTransition(
DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.CENTER_CROP,
ScalingUtils.ScaleType.CENTER_CROP)); // 進入
getWindow().setSharedElementReturnTransition(
DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.CENTER_CROP,
ScalingUtils.ScaleType.CENTER_CROP)); // 返回
}
2.Android 7.0以上返回跳轉前頁面完成過場動畫之后SimpleDraweeView不顯示圖片
這個問題我嘗試在onActivityResult里面進行監(jiān)聽檢測是否SimpleDraweeView的狀態(tài)被設為INVISIBLE或者GONE,并將其重新設置為VISIBLE但是并沒有用。最后在Fresco的issue里面找到其他開發(fā)者提供的解決方案:
在跳轉之前監(jiān)聽共享動畫的結束回調(diào),并將共享元素重新設置為可見
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);
}
}
}
});
歡迎各位加入技術討論群,一起論技術,侃大山。qq群:295456349