我们使用Scene来展示动画。
首先我们获取场景,代码如下:
Scene scene1 = Scene.getSceneForLayout(frameLayout, R.layout.animations_scenes1, this);
frameLayout为盛放控件的总容器。
animations_scenes1为盛放控件。
this为上下文。
我们写四个scene布局:
animations_scenes1代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">
<ImageView
android:id="@+id/iv_green"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@color/theme_green_primary"/>
<ImageView
android:id="@+id/iv_red"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:background="@color/theme_red_primary"/>
<ImageView
android:id="@+id/iv_blue"
android:layout_marginTop="20dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_below="@id/iv_red"
android:background="@color/theme_blue_primary"/>
<ImageView
android:id="@+id/iv_yellow"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_below="@id/iv_green"
android:layout_alignParentRight="true"
android:layout_marginTop="20dp"
android:background="@color/theme_yellow_primary"/>
</RelativeLayout>
animations_scenes2 -- 4 置换ImageView的位置。要注意的是四个布局的id要一直,这样动画就可以在同id的控件间传动。
下面是动画转换的资源文件slide_and_changebounds_sequential_with_interpolators.xml:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:transitionOrdering="sequential">
<slide android:interpolator="@android:interpolator/decelerate_cubic"/>
<changeBounds android:interpolator="@android:interpolator/bounce"/>
</transitionSet>
最后调用方法转换:
TransitionManager.go(scene1, TransitionInflater.from(AnimationsActivity2.this).inflateTransition(R.transition.slide_and_changebounds_sequential));
网友评论