overridePendingTransition

1.平时Activity的切换是就是从中间弹出来,然后遮盖住之前的Activity。这种效果看到很多后就想给他换成其他的效果,如:

要显示的Acitvity从左边往右的平移进入,被遮盖的Activity从左往右的平移划出。

在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity增加了一个方法:

public void overridePendingTransition (int enterAnim, int exitAnim)

其中:

enterAnim 定义Activity进入屏幕时的动画(要显示的Activity进入时的动画)

exitAnim 定义Activity退出屏幕时的动画(被遮盖住的Activity划出时的动画)

overridePendingTransition 方法必须在startActivity()或者 finish()方法的后面。

Android已经内置了几种动画效果,可以见 android.R.anim 类。一般情况下我们需要自己定义屏幕切换的效果。首先我们先了解Activity的位置定义,如下图:

从上图可以看出,以手机屏幕下面边未X轴,屏幕左边为Y轴,当Activity在X轴值为-100%p时,刚好在屏幕的左边(位置1),当X轴值为0%p时,刚好再屏幕内(位置2),当X=100%p时刚好在屏幕右边(位置3)。

在用overridePendingTransition可能会遇到动画效果不产生,解决办法如下:

1、android系统版本2.0以下,这个没办法,想其他办法解决切换动画吧。
 2、在ActivityGroup等的嵌入式Activity中,这个比较容易解决,用如下方法就可以了:
    this.getParent().overridePendingTransition 就可以解决。
 3、在一个Activity的内部类中,或者匿名类中,这时候只好用handler来解决了。

4、手机的显示动画效果被人为或者其他方式给关闭了 现在打开即可 设置->显示->显示动画效果

2.直接上代码

要显示的Activity进入时的动画:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="-100%"
android:toXDelta="0%p" /> </set>

要被遮盖住的Activity滑出时的动画:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="0%"
android:toXDelta="100%p" /> </set>

MainActivity:

 public class MainActivity extends Activity {

     private Button btn;

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Intent i = new Intent();
i.setClass(MainActivity.this, SecondActivity.class);
startActivity(i);
overridePendingTransition(R.anim.in_from_right, R.anim.out_left);
}
});
} }

还有的Activity就没什么实质性的东西了,就不贴出来了。

效果如下:

效果图如下:

     源码下载

最新文章

  1. 使用wex5得到的一些教训
  2. Mysql使用mysqldump按时间导出时的一个注意事项
  3. class &amp;&amp; struct
  4. 听声辨位识DUMP
  5. Linux 系统常用命令汇总(二) vi 文本编辑
  6. 在Win7下安装IIS
  7. OC - 13.数据解析(JSON与XML)
  8. js打开新的链接下载文件
  9. 运用google-protobuf的IM消息应用开发(前端篇)
  10. C++ 用lambda代替 unique_ptr 的Deleter
  11. 详解java设计模式之责任链模式
  12. Helloworld——SpringMVC
  13. .Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何快速调用电话拨打功能
  14. 【VBA】数组定义时,括号内的数值n为最大下标,其长度为n+1
  15. js数据结构之二叉树的详细实现方法
  16. Node入门教程(8)第六章:path 模块详解
  17. Spring Boot 整合Mybatis非starter时,mapper一直无法注入解决
  18. [SoapUI] 在执行某个TestSuite之前先执行login或者其他什么前置步骤
  19. springboot-web进阶(二)——AOP统一处理请求
  20. js中this揭秘

热门文章

  1. Ajax验证用户名
  2. ZPAY个人收款助手使用说明
  3. java代码水仙花
  4. java调用python
  5. 根据MAC地址前6位知道网络设备是哪家公司生产的
  6. php无刷新上传图片
  7. 3 ignite windows 上安装
  8. python学习(九) 魔法方法、属性和迭代器
  9. C Primer Plus学习笔记(九)- 数组和指针
  10. maven 安装 过程