Closed5

作業ログ 2021/04/06

モガンボモガンボ

画面遷移アニメーション

スライドアップ

<!-- slide_up_enter -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="100%p"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toYDelta="0" />
</set>

<!-- slide_up_exit -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="0"
        android:toAlpha="0" />
</set>
  • 何故か遷移元のFragmentが前面に表示されてしまうため、アニメーション開始時にalphaを0に指定

スライドイン・アウト

<!-- slide_enter -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="50%p"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toXDelta="0" />
    <alpha
        android:duration="@android:integer/config_shortAnimTime"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>

<!-- slide_exit -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_shortAnimTime"
        android:fromXDelta="0%p"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toXDelta="-50%p" />
    <alpha
        android:duration="@android:integer/config_shortAnimTime"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>
モガンボモガンボ

FragmentResult

結果送信処理

  • 結果送信側のFragmentのcompanion objectにキーを指定しておくと良さそう
    companion object {
        const val RESULT_KEY: String = "result_key"
        const val BUNDLE_KEY_IS_COMPLETE_SETTLEMENT: String = "bundle_key_is_complete_settlement"
    }

    // ~~略~~

    private fun backFragment() {
        val data = Bundle().apply {
            putString(BUNDLE_KEY, "text")
        }
        parentFragmentManager.setFragmentResult(RESULT_KEY, data)
        findNavController().navigateUp()
    }

結果受信処理

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setFragmentResultListener(ResultFragment.RESULT_KEY) { _, data ->
            val text = data.getString(ResultFragment.BUNDLE_KEY, null)
            // なにかの処理
        }
    }
このスクラップは2021/04/07にクローズされました