Android共享元素動畫效果顯示問題解決
bug描述
設(shè)計(jì)同學(xué)想搞一個(gè)點(diǎn)擊圖片item,item內(nèi)的圖片移動到新頁面的圖片位置的效果,一想就是共享元素就能搞定啊。
companion object { fun gotoDetail( context: Activity, dynamicId: String?, jumpComment: Boolean = false, shareElement: Boolean = false, imageView: ImageView? = null, nameView: TextView? = null, avatarView: ImageView? = null, ) { LogUtils.w(shareElement) if (shareElement) { val intent = Intent(context, HomeDynamicDetailAcitvity::class.java) intent.putExtra("dynamicId", dynamicId ?: "") intent.putExtra("jumpComment", jumpComment) intent.putExtra("shareElement", shareElement) val options = ActivityOptions .makeSceneTransitionAnimation( context, UtilPair.create(imageView, context.getString(R.string.dynamic_start_top_image)), UtilPair.create(avatarView, context.getString(R.string.dynamic_start_avatar)), UtilPair.create(nameView, context.getString(R.string.dynamic_start_name)) ) // val options = ActivityOptions.makeSceneTransitionAnimation(context, imageView, context.getString(R.string.dynamic_start_top_image)) // start the new activity ActivityCompat.startActivity(context, intent, options.toBundle()) } else { val params = HashMap<String, Any>() params["dynamicId"] = dynamicId ?: "" params["jumpComment"] = jumpComment context.toActivity(RoutePath.HOME_DYNAMIC_DETAIL, params) } } }
結(jié)果按照文檔寫了一下,但是效果卻有問題。通過把動畫時(shí)長放到5x的情況下,發(fā)現(xiàn)不是正常的平移動畫,而是先顯示一個(gè)小的圖片然后再漸漸隱藏,然后新界面的大圖片再漸漸顯示,動畫效果明顯不對啊。
官方文檔
要在具有一個(gè)共享元素的兩個(gè) Activity 之間添加屏幕過渡動畫,請執(zhí)行以下操作:
\
- 在主題背景中啟用窗口內(nèi)容過渡。
- 在樣式中指定共享元素過渡。
- 將過渡定義為 XML 資源。
- 使用 android:transitionName 屬性為兩個(gè)布局中的共享元素指定一個(gè)通用名稱。
- 使用 ActivityOptions.makeSceneTransitionAnimation() 函數(shù)。
解決流程
百度了一下看看有沒有人遇到類似的問題,但是并沒有。也對應(yīng)修改了一下style主題什么的,也沒有什么作用。最后想了想,又新建了一個(gè)項(xiàng)目,寫個(gè)demo測試了一下,上面的自己寫的代碼并沒有上面問題,既然沒有問題,那就是項(xiàng)目代碼里面有問題了,和demo最大的區(qū)別就是項(xiàng)目里有網(wǎng)絡(luò)請求,以及圖片加載的操作。確定了不確定的地方那就試試看。
supportPostponeEnterTransition()
supportStartPostponedEnterTransition()
一個(gè)暫停的方法,一個(gè)開始動畫的方法,一進(jìn)入就暫停動畫,網(wǎng)絡(luò)請求或者圖片加載結(jié)束后開始動畫,搞定問題。最后看效果。
ok解決收工
總結(jié)
到此這篇關(guān)于Android共享元素動畫效果顯示問題解決的文章就介紹到這了,更多相關(guān)Android共享元素動畫顯示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android實(shí)現(xiàn)文字垂直滾動、縱向走馬燈效果的實(shí)現(xiàn)方式匯總
本文給大家分享了三種方式實(shí)現(xiàn)Android文字垂直滾動、縱向走馬燈效果,文中給大家介紹了相關(guān)屬性及注意事項(xiàng),需要的朋友參考下吧2017-12-12Android UI控件之ListView實(shí)現(xiàn)圓角效果
這篇文章主要為大家詳細(xì)介紹了Android UI控件之ListView實(shí)現(xiàn)圓角效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android實(shí)現(xiàn)獲取meta-data和build.gradle的值
這篇文章主要介紹了Android實(shí)現(xiàn)獲取meta-data和build.gradle的值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03android判斷手機(jī)是否安裝地圖應(yīng)用實(shí)現(xiàn)跳轉(zhuǎn)到該地圖應(yīng)用
這篇文章主要給大家介紹了android如何判斷手機(jī)是否安裝地圖應(yīng)用,并實(shí)現(xiàn)跳轉(zhuǎn)到該地圖應(yīng)用的方法,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01Android實(shí)現(xiàn)音樂播放進(jìn)度條傳遞信息的兩種方式(在service和activity中)
這篇文章主要介紹了Android:在service和activity之中,實(shí)現(xiàn)音樂播放進(jìn)度條傳遞信息的兩種方式,MediaPlayer做音樂播放器采坑以及解決辦法,需要的朋友可以參考下2020-05-05Android程序設(shè)計(jì)之AIDL實(shí)例詳解
這篇文章主要介紹了Android程序設(shè)計(jì)的AIDL,以一個(gè)完整實(shí)例的形式較為詳細(xì)的講述了AIDL的原理及實(shí)現(xiàn)方法,需要的朋友可以參考下2014-09-09