zoukankan      html  css  js  c++  java
  • Android的Activity屏幕切换动画(一)-左右滑动切换

    这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下。
     
    在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,这样就能实现从左右切换jQuery特效
     
    实现过程如下,首先定义2个动画,在 res目录创建anim目录, 然后在目录创建动画的xml文件:out_to_left.xml (从左边退出动画) 、in_from_right.xml(从右边进入动画)
     
    out_to_left.xml (从 位置2 移动到 位置1)
     
    1
    <?xml version="1.0" encoding="utf-8"?>
    2
    <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">
    3
        <translate android:fromXDelta="0%p" android:toXDelta="-100%p"
    4
            android:duration="500" />
    5
    </set>
    in_from_right.xml (从 位置3 移动到 位置2)
     
    1
    <?xml version="1.0" encoding="utf-8"?>
    2
    <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">
    3
        <translate android:fromXDelta="100%p" android:toXDelta="0%p"
    4
            android:duration="500" />
    5
    </set>
    注: android:fromXDelta 动画开始的位置,  android:toXDelta 动画结束的位置, android:duration动画的时间。
    Android 代码如下:http://www.huiyi8.com/webyuanma/
     
    01
    public class LeftRightSlideActivity extends Activity {
    02
        @Override
    03
        public void onCreate(Bundle savedInstanceState) {
    04
            super.onCreate(savedInstanceState);
    05
            setContentView(R.layout.main);  
    06
             
    07
            Button button = (Button)findViewById(R.id.button1);
    08
            button.setOnClickListener(new View.OnClickListener() { 
    09
                @Override
    10
                public void onClick(View v) {
    11
                    Intent intent = new Intent();
    12
                    intent.setClass(LeftRightSlideActivity.this, SlideSecondActivity.class);
    13
                    startActivity(intent);
    14
                    //设置切换动画,从右边进入,左边退出
    15
                    overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);               
    16
                }
    17
            });
    18
        }
    19
    }
    效果图如下:
         
     
    虽然左右滑动切换的实现很简单,但是对于原理的理解很重要,掌握了原理可以充分发挥想象力设计出各种各样的动画效果,希望对一些入门的新手有帮助。
     
    以后在慢慢整理一些项目中用到的切换动画效果。
  • 相关阅读:
    Verilog非阻塞赋值的仿真/综合问题 (Nonblocking Assignments in Verilog Synthesis)上
    异步FIFO结构及FPGA设计 跨时钟域设计
    FPGA管脚分配需要考虑的因素
    An Introduction to Delta Sigma Converters (DeltaSigma转换器 上篇)
    An Introduction to Delta Sigma Converters (DeltaSigma转换器 下篇)
    中国通信简史 (下)
    谈谈德国大学的电子专业
    中国通信简史 (上)
    Verilog学习笔记
    Verilog非阻塞赋值的仿真/综合问题(Nonblocking Assignments in Verilog Synthesis) 下
  • 原文地址:https://www.cnblogs.com/xkzy/p/3804216.html
Copyright © 2011-2022 走看看