Android的Activity屏幕切换动画(一)-左右滑动切换

来源:互联网 发布:中国统计年鉴2016数据 编辑:程序博客网 时间:2024/06/05 04:12

转自:http://www.oschina.net/question/97118_34343


这段时间一直在忙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,这样就能实现从左右切换效果。

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

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

?
1
2
3
4
5
<?xmlversion="1.0"encoding="utf-8"?>
<setxmlns: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">
    <translateandroid:fromXDelta="0%p"android:toXDelta="-100%p"
        android:duration="500"/>
</set>

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

?
1
2
3
4
5
<?xmlversion="1.0"encoding="utf-8"?>
<setxmlns: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">
    <translateandroid:fromXDelta="100%p"android:toXDelta="0%p"
        android:duration="500"/>
</set>

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

Android 代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
publicclass LeftRightSlideActivity extendsActivity {
    @Override
    publicvoid onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  
         
        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(newView.OnClickListener() { 
            @Override
            publicvoid onClick(View v) {
                Intent intent = newIntent();
                intent.setClass(LeftRightSlideActivity.this, SlideSecondActivity.class);
                startActivity(intent);
                //设置切换动画,从右边进入,左边退出
                overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);               
            }
        });
    }
}

效果图如下:

     

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

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 头发染的巨黑怎么办 染黑头发太黑了怎么办 画眼线老是晕妆怎么办 闷青色染的太绿怎么办 血氧饱和度80多怎么办 染发前洗了头发怎么办 剪了短发后悔了怎么办 短发被剪的太短怎么办 短发剪得太短怎么办 烫头发后洗头了怎么办 头发染得太黄了怎么办 烫发后一直掉发怎么办 头发染的太黄了怎么办 头发染色太浅了怎么办 怀孕60天没有胎心怎么办 染了深褐色很黑怎么办 路边停车费没交怎么办 3岁宝宝难入睡怎么办 一上火眼睛就肿怎么办 孩子上火眼睛红有眼屎怎么办 孩子眼屎多又黄怎么办 眼睛皮周围红痒怎么办 新买的拖鞋有味怎么办 毛巾变得滑滑的怎么办 买的挂钩粘不住怎么办 吸墙挂钩吸不住怎么办 沾挂钩不粘了怎么办 粘钩掉了不粘了怎么办 贴墙挂钩粘不住怎么办 月经量大血块多怎么办 23岁乳房小扁平怎么办 十六岁基本没胸怎么办 肚子上的肉松弛怎么办 17岁乳房外扩该怎么办 胸下垂严重怎么办 17岁 棉条超过8小时了怎么办 在学校来了月经怎么办 如果在学校来月经怎么办 来月经流血量大怎么办 非经期出血量多怎么办 在学校来月经了怎么办