Android 动画Activity转场动画入门
(本篇博客乃本人第一篇博客,如果有不足之处请多多指教)
Android动画在App开发中有着举足轻重的作用,一个酷炫的动画效果能大大提高App的交互效果,动画可以让本来静态的动画变得不那么僵硬,由于现在android设备大都吃上的5.0,所以本文也主要介绍5.0的新转场动画,5.0新定义了转场动画,大致分为如下四种,explode,slide,fade,share,下面我们就废话少说,直接来看怎么实现吧.
1.slide动画,之所以先说Slide动画,是因为我觉得Slide动画相对简单理解
slide动画正如字面意义上滑动一样,是滑动效果的动画,先来看张效果图
这个slide动画效果是通过定义XML文件的方式实现的不需要5.0以上版本
四个xml文件代码如下:
slide_left_in.xml 定义activity从左进入:
slide_right_out.xml定义activity从右出:
slide_left_out.xml定义activity从左出
slide_right_in.xml定义activity从右出
然后在Activity中实现activity]的跳转这里用隐式的Intent实现activity的跳转
然后在重写CActivity的onPause方法实现返回activity的滑动动画
2.Explode动画,explode 就是activity从四周进入
效果:
这个动画跳转就不一样的 虽然不用定义动画 但是代码相对难理解一些
在startActivity(Intent intent,Bundle bundle);要多传一个Bundle
case R.id.btn_explode: startActivity(new Intent(MainActivity.this,BActivity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); break;然后在要跳转的Activity,BActivity中声明
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setEnterTransition(new Explode()); setContentView(R.layout.bactivity); }只有设置了进入动画才能识别5.0动画
代码很简单
3.Fade动画 渐变动画 这个不用多说就是activity慢慢显现
效果:
设置Fade动画和设置explode动画方法差不多
case R.id.btn_fade: startActivity(new Intent(MainActivity.this,DActivity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); break;然后依然在DActivity中设置动画
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setEnterTransition(new Fade()); setContentView(R.layout.dactivity); }注意这里动画设置要在加入布局之前 这里还有一个出去动画
getWindow().setExitTransition(new Fade());进入动画和出去动画最好是不要同时设置
4.Share 共享动画 这个动画的效果是最酷炫的 而且随意定制 废话少说看效果
是不是很酷炫 由于只是一个Demo共享的view还不是很多 当共享的view多的时候更酷炫
这个代码就相对复杂了
MainActivity中的共享 View
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@mipmap/ic_launcher" android:id="@+id/btn_img" android:transitionName="img"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Android" android:gravity="right" android:textSize="20sp" android:id="@+id/tv_text" android:transitionName="text"/>
EActivity的布局中共享view
<Button android:layout_width="wrap_content" android:layout_height="80dp" android:background="@mipmap/ic_launcher" android:id="@+id/btn_img" android:transitionName="img" android:layout_marginLeft="150dp" android:layout_weight="0.08" android:layout_alignParentBottom="true" android:layout_alignParentStart="true" android:layout_marginStart="311dp" android:layout_marginBottom="171dp" />
<TextView android:id="@+id/tv_text" android:layout_width="match_parent" android:layout_height="300dp" android:background="#06d9f1" android:gravity="center" android:text="Android" android:textSize="40sp" android:transitionName="text" android:layout_alignParentTop="true" android:layout_alignParentStart="true" />然后再是跳转了
case R.id.btn_share: View img = findViewById(R.id.btn_img); View text =findViewById(R.id.tv_text); Intent intent = new Intent(MainActivity.this,EActivity.class); startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(img,"img"), Pair.create(text,"text")).toBundle()); break;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); setContentView(R.layout.eactivity); }都设置一个transitionName,注意这个只要与共享的跳转的Activity中的view的
transitionName值一致
这两个Activity有两个共享的View 一个Button 一个TextView,他们分别再两个布局中的位置都不同
当从一个activity跳转到另一个activity时会有一个渐变的过程,看起来就像是共享的view
share动画的应用很广泛 比如列表的跳转 下面给大家看个Share动画的ListView实现
下篇就介绍这篇 顺便有自定义的实现ListView