静态方法
makeCustomAnimation(Context context, int enterResId, int exitResId)
makeScaleUpAnimation(View source, int startX, int startY, int startWidth, int startHeight)
makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)
makeSceneTransitionAnimation(Activity activity, Pair...<View, String> sharedElements)
makeThumbnailScaleUpAnimation(View source, Bitmap thumbnail, int startX, int startY)
1.makeCustomAnimation(Context context, int enterResId, int exitResId) 传入一个进入动画id与一个退出动画id即可
ActivityOptionsCompat options = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.slide_bottom_in, R.anim.slide_bottom_out);
Intent intent = new Intent(this,SecondActivity.class);
ActivityCompat.startActivity(this, intent, options.toBundle());
此方法啊类似于
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_bottom_in, android.R.anim.fade_out);
2.makeScaleUpAnimation(View source, int startX, int startY, int startWidth, int startHeight),是Activity从某个位置扩大至全屏
ActivityOptionsCompat options = ActivityOptionsCompat.makeScaleUpAnimation(view, (int)view.getWidth()/2, (int)view.getHeight()/2, 0, 0);
3.makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName) ,当前界面的某个元素与新界面的元素相关时使用此方法
参数1:当前activity中的元素
参数2:目标activity界面的元素
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, imageView, SecondActivity.IMAGE);
Intent intent = new Intent(this, SecondActivity.class);
ActivityCompat.startActivity(this, intent, options.toBundle());
在目标activity中关联
public static final String IMAGE = "imageTv";
ViewCompat.setTransitionName(imageTv, IMAGE);
makeSceneTransitionAnimation(Activity activity, Pair…<View, String> sharedElements) 当前界面的多个元素与新界面的多个元素相关时使用此方法
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
new Pair<>(imageView, SecondActivity.IMAGE),
new Pair<>(textView, SecondActivity.TEXT));
Intent intent = new Intent(this, SecondActivity.class);
ActivityCompat.startActivity(this, intent, options.toBundle());
在目标activity中关联
public static final String IMAGE = "imageTv";
public static final String TEXT = "textTv";
ViewCompat.setTransitionName(imageTv, IMAGE);
ViewCompat.setTransitionName(textTv, TEXT);
4.makeThumbnailScaleUpAnimation(View source, Bitmap thumbnail, int startX, int startY) 将bitmap拉伸的动画
overridePendingTransition(int enterAnima,int exitAnima)转场动画
此方法需要在startActivity(intent)或者finish()之后被调用才能生效
参数1:打开的activity的动画
参数2:退出的activity的动画
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.anim_left_in, R.anim.anim_right_out);
<translate
android:fromXDelta="-100%"
android:toXDelta="0"/>
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"/>
<scale
android:fromXScale="0.8"
android:toXScale="1.0"
android:fromYScale="0.8"
android:toYScale="1.0"
android:fillAfter="true"
android:pivotX="50%"
android:pivotY="50%" />
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotY="50%"
android:pivotX="50%"/>
<?xml version="1.0" encoding="utf-8"?>
<translate
android:fromXDelta="0"
android:toXDelta="100%"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0"/>
<scale
android:fromXScale="1.0"
android:toXScale="0.8"
android:fromYScale="1.0"
android:toYScale="0.8"
android:pivotX="50%"
android:pivotY="50%" />
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotY="50%"
android:pivotX="50%"/>
Fragment的动画
public abstract FragmentTransaction setTransition(@Transit int transit);
setCustomAnimations(@AnimRes int enter, @AnimRes int exit)
setCustomAnimations(@AnimRes int enter, @AnimRes int exit, @AnimRes int popEnter, @AnimRes int popExit)