android转场动画(Activity和Fragment切换动画)

android转场动画(Activity和Fragment切换动画)_第1张图片
效果图

Activity切换动画

动画执行优先级,系统动画

1.overridePendingTransition()

android转场动画(Activity和Fragment切换动画)_第2张图片
官方简介

android转场动画(Activity和Fragment切换动画)_第3张图片
Activity.jpg

下面放code:
R.anim.in_activity
R.anim.out_activity
R.anim.in_activity_close
R.anim.out_activity_close
资源文件放anim

in_activity



    

out_activity



    

in_activity_close



    

out_activity_close



    


2.Theme方式

    
    

    

主题添加 @style/myWindowAnim
这样全局都有动画了,不用每个Activity单独设置了。
资源文件同上

ActivityOptionsCompat( )

有兼容包,当然5.0以下没有动画效果。
看API名字应该就能知道了

  1. ActivityOptionsCompat.makeCustomAnimation(Context context, int enterResId, int exitResId)【相当于overridePendingTransition】
  2. ActivityOptionsCompat.makeScaleUpAnimation(View source,int startX, int startY, int startWidth, int startHeight)
  3. ActivityOptionsCompat.makeThumbnailScaleUpAnimation(View source,Bitmap thumbnail, int startX, int startY)

共享属性

  1. ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)
  2. ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity,Pair… sharedElements)
//                startActivity(new Intent(this, Main2Activity.class));
//                overridePendingTransition(R.anim.in_activity, R.anim.out_activity);
//                ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeCustomAnimation(this, R.anim
//                        .in_activity, R.anim.out_activity);
//                ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeScaleUpAnimation(v,
//                        v.getWidth() , v.getHeight() , 0, 0);
//                Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
//                ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeThumbnailScaleUpAnimation(v,
//                        bitmap, v.getWidth(), v.getHeight());
                ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(
                        this, v, "sharedElement");
                ActivityCompat.startActivity(this, new Intent(this, B.class),
                        activityOptionsCompat.toBundle());

这里注意:ActivityCompat.startActivity()。

Android 5.0(API 级别 21)支持这些共享元素转换:
changeBounds - 为目标视图的布局边界的变化添加动画。
changeClipBounds - 为目标视图的裁剪边界的变化添加动画。
changeTransform - 为目标视图的缩放与旋转变化添加动画。
changeImageTransform - 为目标图像的大小与缩放变化添加动画。


    


Fragment切换动画

android转场动画(Activity和Fragment切换动画)_第4张图片
fragment.jpg

资源文件放在animator
Fragment转场动画和Activity转场有点不同的是,Fragment只要在跳转页设置就行。

fragment_slide_left_enter



    
    
        
        
        
        
        

fragment_slide_left_exit



    
    
        
        
        
        
        

fragment_slide_right_enter



    
    
        
        
        
        
        

fragment_slide_right_exit



    
    
        
        
        
        
        

参考1

你可能感兴趣的:(android转场动画(Activity和Fragment切换动画))