Fresco 與 元素共享動畫(Share Element Transition)的bug

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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容