いくつかのメモを含むアルファアニメーションで上下にスライドします

slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@integer/activity_transition_time"
>
<translate
android:fromYDelta="100%p"
android:toYDelta="0"/>
<alpha
android:fromAlpha="0.5"
android:toAlpha="1"/>
</set>
slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@integer/activity_transition_time"
>
<translate
android:fromYDelta="0"
android:toYDelta="100%p"/>
<alpha
android:fromAlpha="1"
android:toAlpha="0.5"/>
</set>
no_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@integer/activity_transition_time"
android:fromYDelta="0"
android:toYDelta="0"/>
最初のアクティビティ
startActivity(new Intent(this, SecondActivity.class));
overridePendingTransition(R.anim.slide_up, R.anim.no_animation); // remember to put it after startActivity, if you put it to above, animation will not working
// document say if we don't want animation we can put 0. However, if we put 0 instead of R.anim.no_animation, the exist activity will become black when animate
2番目のアクティビティ
finish();
overridePendingTransition(R.anim.no_animation, R.anim.slide_down);
終わり
詳細ビューモデル( https://www.youtube.com/watch?v=deZobvh2064
など)を表示するときに、iOSアニメーションのようにスライドアニメーションを作成しようとしましたが、失敗しました。
iOSの現在のアニメーションを見ると、次のように表示されます。アルファ(約50%)を使用した下からのアニメーションは、非常に速く、次に遅くなります。アニメーション時間は約500ミリ秒を超えます(アニメーション時間をカウントするためにトリムビデオツールを使用します
https:// www.kapwing.com/trim-videoなので、正確に100%にすることはできません)
それから私はアンドロイドに適用しようとします。
アルファを作るために私は使用<alpha>
して成功します。
アニメーションの開始を遅くするよりも速くするために使用しますandroid:interpolator="a decelerate interpolator"
が、ほとんど失敗しました。
decelerate interpolator
Androidには3つのデフォルトがあります
@android:interpolator/decelerate_quad
->ファクター=1-
@android:interpolator/decelerate_cubic
>ファクター= 1.5_
@android:interpolator/decelerate_quint
>ファクター=2.5
(ファクター<=>が高いほど、アニメーションは最初から速く、最後は遅くなります)
これは良いチュートリアルhttp://cogitolearningです。 co.uk/2013/10/android-animations-tutorial-5-more-on-interpolators/理解してください
上記の3つを試しましたが、iOSのように達成できず、アニメーションをiOSのように速く開始できません。次に、factor=3のようなカスタムdecelerateInterpolatorを作成します。
<?xml version="1.0" encoding="utf-8"?>
<decelerateInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:factor="3" />
と私はから継続時間を増やし500 -> 750
ます。それはうまく機能しています(iOSと非常によく似ています)。ただし、一部のデバイスでのみうまく機能し、一部のデバイスではアニメーションが非常に遅くなります。後で、アニメーションがデバイスごとに異なる可能性があることを知っています(たとえば、一部のデバイスは高速になり、一部のデバイスは低速になります)。そのため、すべてのAndroidデバイスでアニメーションを同じにすることはできません。したがって、私は使用しませんinterpolator
。私のテストが正確に100%であるかどうかはわかりませんが、この経験がお役に立てば幸いです。