Activityジャンプアニメーション--pop animation
6465 ワード
効果図
基本的な実装
5.0より前にActivityのジャンプアニメーションは、自身のoverridePendingTransitionによって実現されました.
public void overridePendingTransition(int enterAnim, int exitAnim) {
try {
ActivityManagerNative.getDefault().overridePendingTransition(
mToken, getPackageName(), enterAnim, exitAnim);
} catch (RemoteException e) {
}
}
int enterAnim,int exitAnimはanimationリソースによって定義されています.Activityジャンプアニメーションの統合管理、およびアニメーションを終了する特殊な処理に注意してください.
ぎじふごう
A—>Bの場合
R.anim.activity_pop_in—>Bのアニメーションへのアクセス
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:duration="300"
android:fromXScale=".5"
android:fromYScale=".5"
android:pivotX="50%p"
android:pivotY="50%p"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration="300"
android:fromAlpha=".4"
android:toAlpha="1" />
set>
R.animation.pop_out—>Aの終了アニメーション
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="1.0" />
R.anim.activity_pop_out—>Bの終了アニメーション
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="300"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%p"
android:pivotY="50%p"
android:toXScale=".8"
android:toYScale="0.8" />
<alpha
android:duration="300"
android:fromAlpha="1"
android:toAlpha="0" />
set>
3つのアニメーションのdurationが一致することに注意してください.
BaseActivityによるActivivtyジャンプアニメーションの統合管理
public class BaseActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
if (isOverride()) {
overridePendingTransition(R.anim.activity_pop_in, R.anim.pop_out);
}
super.onCreate(savedInstanceState);
}
@Override
public void finish() {
super.finish();
if (isOverride()) {
overridePendingTransition(0, R.anim.activity_pop_out);
}
}
protected boolean isOverride() {
return true;
}
}
まとめ
手順は簡単で、主にanimationパラメータの調整です.