Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

대상 간 전환 애니메이션 처리

탐색 구성요소를 사용하면 작업에 속성 및 보기 애니메이션을 모두 추가할 수 있습니다. 고유의 애니메이션을 만들려면 애니메이션 리소스를 확인하세요.

탐색에는 시작을 위한 몇 가지 기본 애니메이션도 포함됩니다. 작업에 애니메이션을 추가하려면 다음을 실행합니다.

  1. 탐색 편집기에서 애니메이션이 실행되어야 하는 작업을 클릭합니다.
  2. Attributes 패널의 Animations 섹션에서 추가하려는 애니메이션 옆의 드롭다운 화살표를 클릭합니다. 다음 유형 중에서 선택할 수 있습니다.
    • 대상 입력하기
    • 대상에서 나가기
    • 팝 작업을 통해 대상 입력하기
    • 팝 작업을 통해 대상에서 나가기
  3. 표시되는 프로젝트 애니메이션 목록에서 애니메이션을 선택합니다.

애니메이션을 추가한 후 Text 탭을 클릭하여 XML 텍스트 뷰로 전환합니다. 이제 애니메이션의 XML이 대응하는 <action> 요소에 표시됩니다. 다음 예에서 specifyAmountFragmentconfirmationAction 작업의 소스 대상입니다.

    <fragment
        android:id="@+id/specifyAmountFragment"
        android:name="com.example.buybuddy.buybuddy.SpecifyAmountFragment"
        android:label="fragment_specify_amount"
        tools:layout="@layout/fragment_specify_amount">
        <action
            android:id="@+id/confirmationAction"
            app:destination="@id/confirmationFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right" />
    </fragment>
    

대상 간에 공유 요소 전환 추가

전환 애니메이션 외에도 탐색은 대상 간에 공유 요소 전환을 추가할 수 있도록 지원합니다. 공유 요소 전환은 공유 요소 전환에 포함하려는 View 인스턴스를 참조해야 하므로 탐색 XML 파일을 사용하는 대신 프로그래밍 방식으로 제공됩니다.

대상의 각 유형은 Navigator.Extras 인터페이스의 서브클래스를 통해 이 프로그래매틱 API를 구현합니다. Extrasnavigate()의 호출에 전달됩니다.

프래그먼트 대상 공유 요소 전환

FragmentNavigator.Extras 클래스를 사용하면 아래 예와 같이 프래그먼트 대상의 navigate() 호출에 공유 요소를 연결할 수 있습니다.

Kotlin

    val extras = FragmentNavigatorExtras(
        imageView to "header_image",
        titleView to "header_title")
    view.findNavController().navigate(R.id.confirmationAction,
        null, // Bundle of args
        null, // NavOptions
        extras)
    

자바

    FragmentNavigator.Extras extras = new FragmentNavigator.Extras.Builder()
        .addSharedElement(imageView, "header_image")
        .addSharedElement(titleView, "header_title")
        .build();
    Navigation.findNavController(view).navigate(R.id.details,
        null, // Bundle of args
        null, // NavOptions
        extras);
    

활동 대상 공유 요소 전환

활동은 공유 요소로 활동 시작 문서의 설명된 대로 아래 예와 같이 ActivityOptionsCompat를 사용하여 공유 요소 전환을 제어합니다.

Kotlin

    // Rename the Pair class from the Android framework to avoid a name clash
    import android.util.Pair as UtilPair
    ...
    val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
            UtilPair.create(imageView, "header_image"),
            UtilPair.create(titleView, "header_title"))
    val extras = ActivityNavigator.Extras(options)
    view.findNavController().navigate(R.id.details,
        null, // Bundle of args
        null, // NavOptions
        extras)
    

자바

    ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
            Pair.create(imageView, "header_image"),
            Pair.create(titleView, "header_title"));

    ActivityNavigator.Extras extras = new ActivityNavigator.Extras.Builder()
        .setActivityOptions(options)
        .build();
    Navigation.findNavController(view).navigate(R.id.details,
        null, // Bundle of args
        null, // NavOptions
        extras);
    

팝 애니메이션을 활동 전환에 적용

Activity로/에서 이동할 때 팝 애니메이션은 자동으로 적용되지 않습니다. 대신, 애니메이션이 실행되어야 하는 타겟 Activity 대상에서 ActivityNavigator.applyPopAnimationsToPendingTransition()을 호출해야 합니다.

Kotlin

    override fun finish() {
        super.finish()
        ActivityNavigator.applyPopAnimationsToPendingTransition(this)
    }
    

자바

    @Override
    public void finish() {
        super.finish();
        ActivityNavigator.applyPopAnimationsToPendingTransition(this);
    }