Android动画

2018-04-24  本文已影响12人  简单Liml

我们使用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));
上一篇下一篇

猜你喜欢

热点阅读