ActivityOptionsCompat概述
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
这里只是简单介绍ActivityOptionsCompat的使用后面文章会有更具体讲解。
利用overridePendingTransition实现转场动画可以在android2.0开始使用,google在Android5.0提出了MD的设计风格,并扩充了Activity的转场动画,利用ActivityOptions和ActivityOptionsCompat可以实现新风格的转场动画。ActivityOptionsCompat是ActivityOptions的兼容包,虽然是兼容包但内部有的动画风格在5.0以下的版本依然不支持,只不过坚持在低版本使用ActivityOptionsCompat的动画不会出错,所以下面会重点讲解ActivityOptionsCompat。
前面讲解了利用ActivityOptionsCompat实现了共享元素动画,请看 共享元素动画
ActivityOptionsCompat 主要用于生成Context.startActivity(Intent, Bundle) 所需要的 options Bundle 再配合其他方法实现转场动画。
注意:
要使用新的过渡动画需要在style中设置windowContentTransitions为true,作用是开启Transition动画:
- true
或者利用代码:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
必须要添加在super.onCreate(savedInstanceState)之前
2 ActivityOptions 提供的静态方法,实现切换效果
提供的静态方法:
- makeCustomAnimation(Context context, int enterResId, int exitResId)
- makeClipRevealAnimation (View source, int startX, int startY, int width, int height)
- makeScaleUpAnimation(View source, int startX, int startY, int width, int height)
- makeThumbnailScaleUpAnimation(View source, Bitmap thumbnail, int startX, int startY)
- makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)
- makeSceneTransitionAnimation(Activity activity, Pair...
sharedElements)
makeCustomAnimation(Context context, int enterResId, int exitResId)
用户自定义动画,指定进入和退出动画,api16开始支持
参数说明:
enterResId:Activity进入动画资源id
exitResId:Activity退出动画资源id
代码示例:从Main8Activity启动Main7Activity,然后从Main7Activity回到Main8Activity
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeCustomAnimation(Main8Activity.this, R.anim.translate_left_in, R.anim.translate_right_out);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
可以看到进入Main7Activity时Main8Activity和Main7Activity的动画都执行了。
makeClipRevealAnimation (View source, int startX, int startY, int width, int height)
从一个view的剪切区域放大然后打开新的Activity,Api23开始支持,
参数说明:
startX,startY:区域起点,利用source作为原点
width,height:区域宽高
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeClipRevealAnimation(gongxiang, 30,30,50,50);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
效果不太明显
makeScaleUpAnimation(View source, int startX, int startY, int width, int height)
放大一个view,然后显示新的Activity
参数说明:
view:放大的view
startX,startY:从哪里开始缩放,以source为原点
width,height:新的activity从多大开始放大,如果是0,0则表示从最小开始。
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeScaleUpAnimation(gongxiang, gongxiang.getWidth() / 2, gongxiang.getHeight() / 2, 0, 0);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
makeThumbnailScaleUpAnimation(View source, Bitmap thumbnail, int startX, int startY)
放大一张图片,然后打开activity
参数说明
source:参考原点
thumbnail:要放大的图片
startX,startY:从哪里开始放大,以source为坐标原点
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.compositedst1);
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeThumbnailScaleUpAnimation(gongxiang,bitmap ,300,500);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
效果很不明显,只可以看到一闪而过的图片
makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)
makeSceneTransitionAnimation(Activity activity, Pair...
参考共享元素动画文章
共享元素动画
使用ActivityOptionsCompat之后虽然感觉很新奇,但是除了共享元素动画之外其他的动画设置都很受限,后面会介绍Transition说明新的利用Transition自定义进入,退出动画的方式。
Animation动画概述和执行原理
Android动画之补间动画TweenAnimation
Android动画之逐帧动画FrameAnimation
Android动画之插值器简介和系统默认插值器
Android动画之插值器Interpolator自定义
Android动画之视图动画的缺点和属性动画的引入
Android动画之ValueAnimator用法和自定义估值器
Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性
Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator
Android动画之AnimatorSet联合动画用法
Android动画之LayoutTransition布局动画
Android动画之共享元素动画
Android动画之ViewPropertyAnimator(专用于view的属性动画)
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
Android动画之ActivityOptionsCompat概述
Android动画之场景变换Transition动画的使用
Android动画之Transition和TransitionManager使用
Android动画之圆形揭露动画Circular Reveal
Android 动画之 LayoutAnimation 动画
Android动画之视图动画的缺点和属性动画的引入