ActivityOptionsCompat 转场动画学习笔记

静态方法

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);

<?xml version="1.0" encoding="utf-8"?>

<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)

发布了13 篇原创文章 · 获赞 2 · 访问量 588

猜你喜欢

转载自blog.csdn.net/qq_42806685/article/details/99644073