2

在我的應用程序中,我有一個啓動時的飛濺徽標屏幕。當主屏幕在定時器結束時啓動時,我將共享轉換應用於該飛濺徽標圖像。在轉換過程中,它從中心(啓動畫面)移動到主屏幕工具欄的左上角。如果提供了橫向模式的備用佈局,則縱向模式的共享動畫不會生成動畫。 (對於Android支持庫23.0.0)

我正在使用AppbarLayout和工具欄。我使用兩種不同的應用欄來實現以下設計。 enter image description here創建兩個(land/appbar_home和layout/appbar_home)佈局後,將它們包含在fragment_home(其中協調器佈局最上面)中。

整個代碼運行良好,直到我開始使用版本23.0.0的android庫(appcompat,支持&設計)。移至更高版本(23.0.0)的庫後,過渡將停止進行縱向模式。但同一時間,如果設備處於橫向模式,則工作正常。

在少數本地修復失敗後,決定嘗試不同項目中的場景。在新項目中,我添加了一個應用程序欄佈局(layout/appbar_home)動畫效果很好,但只要我添加了land/appbar_home,它就停止在肖像模式下。在橫向模式下,它按預期動畫。您可以看到測試項目on github

這似乎是與圖書館的一些問題。但是,如果沒有,代碼或方法有什麼問題。

回答

1

這看起來像是一個問題,但我有一個方法可以使它現在工作,直到它是固定的。

如果您在代碼中設置,而不是XML的transitionName,它將爲縱向和橫向工作:

更新您既縱向和橫向appbar_home.xml佈局給予ImageView的一個id:

<ImageView 
     android:id="@+id/appbar_logo" 
     android:layout_width="wrap_content" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_margin="5dp" 
     android:adjustViewBounds="true" 
     android:src="@drawable/rnd_1" 
     android:transitionName="@string/transition_logo" /> 

,然後在HomeActivityFragment,設置在onCreateView的transitionName:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    ImageView appBarLogo = (ImageView) rootView.findViewById(R.id.appbar_logo); 
    ViewCompat.setTransitionName(appBarLogo, "logo_transition"); 
    return rootView; 
} 
0

我有同樣的問題,我解決了它,只有切換回22版本庫。你也可以嘗試更新你的所有庫到相同的版本(23),但它並沒有幫助我

+0

感謝您的答覆。實際上,v23.0.0中的AppbarLayout和Toolbar幾乎沒有什麼重大變化,這些變化是應用程序的正確行爲所必需的。所以不能退後。但我可以做的一件事是在即將發佈的版本中保留修復的希望,因爲我有一段時間才公開發布應用程序。 :-) – HBB20

+0

嘿,如果你想使用最新的庫,你可以使用@劉易斯的建議... – HBB20

相關問題