zoukankan      html  css  js  c++  java
  • Activity切换效果(overridePendingTransition)

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

     

    public void overridePendingTransition (int enterAnim, int exitAnim)

    其中:

    enterAnim 定义Activity进入屏幕时的动画

    exitAnim 定义Activity退出屏幕时的动画

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

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

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


    从一到二位置:

    从二到一位置:

    从三到二位置:



    清楚了位置后,我们就可以实现左右滑动的切换效果,首先让要退出的Activity从位置2移动到位置1,同时让进入的Activity从位置3移动位置2,这样就能实现从左右切换效果。

    实现过程如下,首先定义2个动画,在 res目录创建anim目录, 然后在目录创建动画的xml文件:out_to_left.xml (从左边退出动画) 、in_from_right.xml(从右边进入动画)

    in_from_right.xml (从 位置1 移动到 位置2)

     

     

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



    out_to_left.xml (从 位置2 移动到 位置1)


     

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="<a href="http://my.oschina.net/asia" class="referer" target="_blank">@android</a> :anim/accelerate_interpolator">
        <translate android:fromXDelta="0%p" android:toXDelta="-100%p"
            android:duration="500" />
    </set>



    in_from_right.xml  (从 位置3 移动到 位置2)

     

     

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="<a href="http://my.oschina.net/asia" class="referer" target="_blank">@android</a> :anim/accelerate_interpolator">
        <translate android:fromXDelta="100%p" android:toXDelta="0%p"
            android:duration="500" />
    </set>


    注:  android:fromXDelta 动画开始的位置,   android:toXDelta  动画结束的位置, android:duration 动画的时间。

     

    Android 代码如下:

     

    public class LeftRightSlideActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);   
            
            Button button = (Button)findViewById(R.id.button1);
            button.setOnClickListener(new View.OnClickListener() {	
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent();
    				intent.setClass(LeftRightSlideActivity.this, SlideSecondActivity.class);
    				startActivity(intent);
    				//设置切换动画,从右边进入,左边退出
    				overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);				
    			}
    		});
        }
    }


     

    效果图如下:

     

         

    虽然左右滑动切换的实现很简单,但是对于原理的理解很重要,掌握了原理可以充分发挥想象力设计出各种各样的动画效果,希望对一些入门的新手有帮助。

    以后在慢慢整理一些项目中用到的切换动画效果。


     
     
    分享到 
    收藏
    62
    踩  0 |  顶  1
     
  • 相关阅读:
    jvm基本结构和解析
    多态的意思
    java中对象的简单解读
    double类型和int类型的区别
    python 解析xml文件
    win10不能映射Ubuntu共享文件
    Qt程序打包
    Ubuntu boot分区文件误删,系统无法启动,怎么解
    ubuntu Boot空间不够问题“The volume boot has only 5.1MB disk space remaining”
    Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default
  • 原文地址:https://www.cnblogs.com/james1207/p/3279937.html
Copyright © 2011-2022 走看看