• Android Activity的切换动画(overridePendingTransition)


    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进入时的动画:

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

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

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

    MainActivity:

     1 public class MainActivity extends Activity {
     2 
     3     private Button btn;
     4 
     5     @Override
     6     protected void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9         btn = (Button) findViewById(R.id.btn);
    10         btn.setOnClickListener(new OnClickListener() {
    11 
    12             @Override
    13             public void onClick(View v) {
    14                 Intent i = new Intent();
    15                 i.setClass(MainActivity.this, SecondActivity.class);
    16                 startActivity(i);
    17                 overridePendingTransition(R.anim.in_from_right, R.anim.out_left);
    18             }
    19         });
    20     }
    21 
    22 }

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

    效果如下:

    效果图如下:

     

         源码下载

     

     

  • 相关阅读:
    软件质量属性简述
    浅谈MVC架构
    SOA整理
    程序员的自我修养阅读笔记3
    程序员的自我修养阅读笔记2
    程序员的自我修养阅读笔记1
    架构漫谈阅读笔记3
    架构漫谈阅读笔记2
    Weather APP
    php通过==和!==比较NULL和''结果均为真
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/3985117.html
Copyright © 2020-2023  润新知