Closed5
作業ログ 2021/04/06
以前対応したアプリの音源差し替え対応
- 音源差し替えの要望が来たため対応
Android
-
画面遷移アニメーション
https://at-sushi.work/blog/21 -
fragent result
https://tech.mokelab.com/android/Fragment/result.html
画面遷移アニメーション
スライドアップ
<!-- 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にクローズされました