开启ViewGroup默认的过场动画

<android.support.constraint.ConstraintLayoutandroid:id="@+id/container"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"//设置android:animateLayoutChanges为true,即可在添加和移除子控件的时候有默认动画效果android:animateLayoutChanges="true">

自定义ViewGroup的过场动画

在布局的中每个对象在布局变换时都有5种状态:
APPEARING:布局中出现一个视图
DISAPPEARING:容器中消失一个视图
CHANGING:布局改变导致某个视图随之改变,例如调整大小,但不包括添加和移除视图
CHANGE_APPERAING:其他视图的出现导致某个视图改变
CHANGE_DISAPPEARING:其他视图的消失导致某个视图改变
public class LayoutChangeAnimationActivity extends AppCompatActivity {@BindView(R.id.textView)TextView mTextView;@BindView(R.id.button2)Button mButton2;@BindView(R.id.container)ConstraintLayout mContainer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_layout_change_animation);ButterKnife.bind(this);//绑定新的过渡动画LayoutTransition layoutTransition = new LayoutTransition();mContainer.setLayoutTransition(layoutTransition);//自定义出场动画ObjectAnimator rotation = ObjectAnimator.ofFloat(null, "rotation", 0f, -3600f).setDuration(layoutTransition.getDuration(LayoutTransition.APPEARING));layoutTransition.setAnimator(LayoutTransition.APPEARING,rotation);//自定义消失动画ObjectAnimator dispear = ObjectAnimator.ofFloat(null, "translationX", 0f, 3600f,0f).setDuration(layoutTransition.getDuration(LayoutTransition.DISAPPEARING));layoutTransition.setAnimator(LayoutTransition.DISAPPEARING,dispear);//使用属性动画设置似乎并不生效PropertyValuesHolder scale = PropertyValuesHolder.ofFloat("translationX", 0f,1000f,0f);PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1f, 0f,1f);ValueAnimator valueAnimator = ObjectAnimator.ofPropertyValuesHolder(scale, alpha).setDuration(layoutTransition.getDuration(LayoutTransition.DISAPPEARING));}boolean isAdd = true;@OnClick(R.id.button2)public void onClick() {if (isAdd) {mContainer.removeView(mTextView);} else {mContainer.addView(mTextView);}isAdd = !isAdd;}
}

页面切换时的过渡动画

打开页面时的动画:

res/anim/act_open_enter
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotate
        android:fromDegrees="90"android:toDegrees="0"android:pivotX="0%"android:pivotY="0%"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/><alpha
        android:fromAlpha="0.0"android:toAlpha="1.0"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/>
</set>res/anim/act_open_exit
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotate
        android:fromDegrees="-90"android:toDegrees="0"android:pivotX="0%"android:pivotY="0%"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/><alpha
        android:fromAlpha="1.0"android:toAlpha="0.0"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/>
</set>
                Intent intent = new Intent(AchChangeAnimation1.this, AchChangeAnimation2.class);//在startAct后调用才能生效startActivity(intent);overridePendingTransition(R.anim.act_open_enter,R.anim.act_open_exit);

退出当前页面时的动画

res/anim/act_close_enter
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotate
        android:fromDegrees="-90"android:toDegrees="0"android:pivotX="0%p"android:pivotY="0%p"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/><alpha
        android:fromAlpha="0.0"android:toAlpha="1.0"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/>
</set>
res/anim/act_close_exit
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotate
        android:fromDegrees="-90"android:toDegrees="0"android:pivotX="0%p"android:pivotY="0%p"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/><alpha
        android:fromAlpha="0.0"android:toAlpha="1.0"android:fillEnabled="true"android:fillBefore="true"android:fillAfter="true"android:duration="500"/>
</set>
        finish();//finish()后调用才能生效overridePendingTransition(R.anim.act_close_enter,R.anim.act_close_exit);

每次都需要调用过于麻烦,可以在主题中定义

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><!--定义过场动画--><item name="android:windowAnimationStyle">@style/ActAnimation</item></style><style name="ActAnimation"parent="@android:style/Animation.Activity"><item name="android:activityOpenEnterAnimation">@anim/act_open_enter</item><item name="android:activityOpenExitAnimation">@anim/act_open_exit</item><item name="android:activityCloseEnterAnimation">@anim/act_close_enter</item><item name="android:activityCloseExitAnimation">@anim/act_close_exit</item></style></resources>

Fragment的过渡动画

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
//必须在add replace等方法前调用        fragmentTransaction.setCustomAnimations(R.anim.act_open_enter,R.anim.act_open_exit,R.anim.act_close_enter,R.anim.act_close_exit);

布局改变时的过场动画相关推荐

  1. 禁止ScrollView在子控件的布局改变时自动滚动的的方法

    重写scrollview中的如下方法,并将其返回值设为0即可. @Override  protected int computeScrollDeltaToGetChildRectOnScreen(Re ...

  2. android 布局变化动画效果,使用LayoutTransition实现布局变化时的动画

    在3.0及以后只需要在XML中设置animateLayoutChanges="true"或者在Java代码中添加一个LayoutTransition对象即可实现任何ViewGrou ...

  3. 用shader做一个柿子颜色的过场动画

    想要提高编写shader的水平,需要不断学习和练习. 跪着看完大神们的shadertoy作品后打算自己找个软柿子捏一捏.想了半天打算实现一下Nintendo Switch主机进eShop时的过场动画, ...

  4. Layout动画:在android布局发生变化时添加动画效果

    layout动画在每次布局发生变化的时候系统调用的一个预加载动画效果,使用layout动画可以让布局的变化过度看起来更自然.使用起来很简单,只需在控件中添加一个属性就可以了,系统默认是不会启动layo ...

  5. 《武士零》开发者:怎样设计玩家喜欢的过场动画?

    每当一款游戏开始播放过场动画,屏幕上弹出人物对话时,我总是很无奈.我会打开手机逛推特或者看看Reddit,因为在过场动画播放的这段时间里,我什么都做不了. 但<武士零>(Katana Ze ...

  6. UE4.27 制作过场动画

    1.先创建关卡序列,并选择位置保存 2. 把创建的关卡序列放到场景中 位置在哪里无所谓 3.场景中添加电影摄像机 4. 对电影摄像机添加轨道 step1: 首先在世界大纲中选中电影摄像机组件,如下图右 ...

  7. android 延时播放动画,HollyTransition: 让APP丝滑般流畅:深入解读Android过渡动画Transition. 共享元素动画、场景动画、过场动画、延时动画...

    HollyTransition 零.导读 深入解读Android过渡动画Transition: 页面切换动画(过场动画) 共享元素动画 延时动画 场景动画 一.Transition前世今生 为了支持各 ...

  8. 关卡 动画 蓝图 运行_UE4无缝过场动画

    最近有个哥们给我看他们最近在做的一个游戏,其中有这样一段镜头 https://www.zhihu.com/video/1171378736917364736 运用到了一个很常用的过场方式,就是平时我们 ...

  9. 5分钟制作Unity过场动画 | Timeline

    你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦. 这里是5分钟Unity学院,没有废话的Unity教程,今天来学习如何制作过场动画. 过场动画,这么复杂的东西如何在5分钟内 ...

  10. 关于Vue.js的v-for,key的顺序改变,影响过渡动画表现

    关于Vue.js的v-for,key的顺序改变,影响过渡动画表现 这个问题是在写Message组件出现的,先看代码部分 子组件: #Notice:<transition :name=" ...

最新文章

  1. JLOI2015 战争调度
  2. 经济危机下企业倒闭的真相
  3. android 电池栏的高度,Android如何取得状态栏、任务栏高度
  4. 倍福嵌入式控制器PLC各型号简介
  5. oracle元字符,正则表达式元字符
  6. redis aof持久化遇到的Can't open the append-only file Permissi
  7. 99%程序员不知道的编程必备工具,人工智能助你编程更轻松
  8. 公司新来了一个质量工程师,说团队要保证 0 error,0 warning
  9. angularjs config_AngularJS依赖注入
  10. 【渝粤教育】国家开放大学2018年秋季 0570-21T摄像、录像制作 参考试题
  11. 在 Mac 上的“快捷指令”中如何调整基本隐私设置?
  12. linux聪某个附属组删除_linux-user-group添加与删除
  13. doubango的帧率太低,怎么解决?
  14. 征途猎魔mysql数据库_字典列表的拓展理解
  15. CS61A lab 0:getting started
  16. excel利用公式获取行或列中最后一个非空单元格数据
  17. 电脑卡怎么办?4招帮你解决电脑卡顿的烦恼!
  18. 网站 xjjdog.cn,敬请惠存
  19. 你的电脑未正确启动,自动修复死循环
  20. 端口绑定技术基础介绍

热门文章

  1. T31-DAY20(JWT的介绍和使用)
  2. HTML5基础知识2
  3. 计算机在运行表格的时候很慢,win7系统打开excel2007表格很慢的解决方法
  4. python基本代码教程-如何真正零基础入门Python?(第一节)
  5. 手机网络 G、E、H、H+、4G 都是什么意思
  6. 美国十大毕业典礼演讲:记着你总会死去……
  7. 蓝桥ROS机器人之51单片机C代码编译和下载
  8. 计算机用户名起什么好,如何随机取名计算机名-如何改计算机用户名
  9. Emulex着眼数据中心LAN与SAN的聚合
  10. 移动手机号服务密码重置