2015-02-07 53 views
3

我使用API​​級別21,檢測在Nexus 6.父活動變得在出口過渡

看不見我有兩個活動:大師+詳細地,每個視圖具有一個片段。 當我在主列表中選擇一個項目時,它將轉換到詳細視圖。

我已經在主機和細節啓用視圖過渡,就像這樣:

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 

    Transition ts = new Slide(Gravity.RIGHT); 
    ts.setDuration(2500); 
    getWindow().setEnterTransition(ts); 
    getWindow().setExitTransition(ts); 

    getWindow().setAllowEnterTransitionOverlap(true); 
    getWindow().setAllowReturnTransitionOverlap(true); 

的過渡動畫作品如預期,除了一兩件事:當我選擇一個項目,父活動被隱藏,因爲它的轉換出來,所以我看不到它。當我按回時,細節視圖被轉換出來(不隱藏),並且主機被轉換(不隱藏)。 那麼爲什麼當主視圖轉換出來並且細節視圖轉換時隱藏了呢?

在Android Studio中我看到幾個日誌訊息如此:

changeCanvasOpacity: opaque=true 
changeCanvasOpacity: opaque=false 
changeCanvasOpacity: opaque=false 
changeCanvasOpacity: opaque=false 

的前兩行是第一過渡(主=>細節)和第二兩個是背部(詳細=>主) 。正如你所看到的,只有一行是「opaque = true」。我相信這是當主視圖隱藏時(隨着轉換開始)。

我該如何預防?

在這篇文章中Content Transitions In-Depth (part 2),在「Content Transitions Under-the-Hood」下,項目1C中它說:「框架將A中的所有轉換視圖設置爲INVISIBLE。」。

我相信這是我的問題。我該如何解決這個問題?

+0

我想實現這樣的效果(從master => detail轉換時):http://www.christianpeeters.com/android-tutorials/tutorial-activity-slide-animation/#more-483 – mikeesouth 2015-02-07 23:17:40

+0

當動畫更快(例如持續時間= 300毫秒),但不太明顯,但如果持續時間爲2500毫秒,則顯然在退出動畫完成之前調用視圖消失。 – mikeesouth 2015-02-08 08:24:35

回答

2

我有當我使用ActivityOptionsCompat.makeSceneTransitionAnimation. 我解決它通過去除activiy標誌同樣的問題:android:launchMode="singleInstance" 它可以通過不同的任務造成無法使用翻譯動畫。

+0

這解決了一個問題,我看到了兒童活動不會出現的地方。謝謝! – rsteckler 2016-05-13 18:01:01

2

我也有類似的問題,只是調用的setContentView後解決它在目標活動的onCreate加入這個片段:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     getWindow().setEnterTransition(null); 
    } 
0

我才意識到,我是不調用supportStartPostponedEnterTransition()調用supportPostponeEnterTransition()我面臨這個問題。我不得不稱呼這些,因爲我正在使用Glide加載圖像。