Android Activity和Fragment的转场动画
来源:互联网 发布:git ssh eclipse 端口 编辑:程序博客网 时间:2024/06/06 00:42
Activity转场动画可以通过overridePendingTransition(int enterAnim, int exitAnim)来实现。这个方法是API 5加入的,方法的第一个参数:enterAnim,是跳转Activity的进入动画的resource ID;第二个参数exitAnim,是当前Activity的离开动画的resource ID。
动画的资源文件放在res\anim\目录下,是View Animation。View Animation包含了基本的动画类型,基本可以满足一般转场动画的需要。
若不调用该方法,会使用系统默认的跳转动画,而不是不使用动画(参数传0,才表示不使用动画)。需要特别注意的是该方法的调用时机:必须在startActivity或finish、onBackpress之后调用才有效。
代码例子:
activity_right_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromXDelta="100%p" android:toXDelta="0"/></set>
activity_right_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromXDelta="0" android:toXDelta="-100%p"/></set>
activity_left_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromXDelta="-100%p" android:toXDelta="0"/></set>
activity_left_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromXDelta="0" android:toXDelta="100%p"/></set>
在MainActivity中跳转
Intent intent = new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);// transaction animationoverridePendingTransition(R.anim.activity_right_in,R.anim.activity_right_out);
在SecondActivity中回到MainActivity
finish();// transaction animationoverridePendingTransition(R.anim.activity_left_in,R.anim.activity_left_out);
这样就实现了从右边进入,从左边退出的Activity转场动画。如果需要实现按返回键也有转场动画,需要重写Activity的onBackPress()方法。
@Overridepublic void onBackPressed() {super.onBackPressed();overridePendingTransition(R.anim.left_in,R.anim.left_out);}
Fragment转场动画可以通过transaction.setTransition和setCustomAnimations来实现。系统已经定义好的动画效果,比如
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)是系统的淡入淡出动画,在add/hide/replace/remove之前调用即可。
FragmentTransaction transaction = manager.beginTransaction(); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);fragment = MyFragment.newInstance();transaction.add(R.id.container, fragment, fragment.getId() + "");transaction.commit();
如果系统自带的动画效果满足不了你的需求,可以通过setCustomAnimations这个方法来实现。Activity的 overridePendingTransition一样,传入开启的Fragment进入动画resource ID和当前的Fragment关闭动画resource ID。
FragmentTransaction transaction = manager.beginTransaction();transaction.setCustomAnimations(R.anim.right_in, R.anim.right_out);fragment = MyFragment.newInstance();transaction.add(R.id.container, fragment, fragment.getId() + "");transaction.commit();
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- Android Activity和Fragment的转场动画
- activity和fragment的转场动画的实现
- Activity、Fragment转场动画
- Activity与Fragment的转场动画.
- Android的Fragment的自定义转场动画
- Android Activity转场动画
- Android Activity转场动画
- Android activity 转场动画ActivityOptions
- Android Activity转场 -- 揭露动画
- HLS ORB算法设计心得
- Redis 集群详解 环境搭建 调用案例
- CocoaPods 安装过程中的 Warning&Error 备忘
- iOS图片拉伸之神属性:resizableImageWithCapInsets
- No enclosing instance of type is accessible.
- Android Activity和Fragment的转场动画
- c语言实现单链表&二级指针在单链表的应用
- HTTP与HTTPS的区别
- opencv中Mat的数学运算和基本操作
- 链接器如何识别重复模板实例
- java与C#语法区别(持续ing)
- 解析 HTTP(HttpURLConnection getResponseCode)
- springmvc+activemq2
- 在 Laravel 5 中通过 Simple QrCode 扩展包生成二维码详解