標籤:
Transition架構允許開發人員將一個或多個動畫應用到一個View hierarchies中。
MainActivity.java
1 package com.dhn.learntransition; 2 3 import android.annotation.TargetApi; 4 import android.app.Activity; 5 import android.os.Build; 6 import android.support.v7.app.ActionBarActivity; 7 import android.os.Bundle; 8 import android.transition.AutoTransition; 9 import android.transition.Scene;10 import android.transition.Transition;11 import android.transition.TransitionManager;12 import android.view.Menu;13 import android.view.MenuItem;14 import android.view.View;15 import android.view.ViewGroup;16 import android.view.animation.AccelerateDecelerateInterpolator;17 import android.widget.Button;18 import android.widget.TextView;19 20 21 public class MainActivity extends Activity {22 23 Scene mAScene;24 Scene mAnotherScene;25 ViewGroup mSceneRoot;26 boolean first = true;27 28 29 @TargetApi(Build.VERSION_CODES.KITKAT)30 @Override31 protected void onCreate(Bundle savedInstanceState) {32 super.onCreate(savedInstanceState);33 setContentView(R.layout.activity_main);34 35 36 mSceneRoot = (ViewGroup) findViewById(R.id.scene_root);37 38 // Create the scenes39 mAScene = Scene.getSceneForLayout(mSceneRoot, R.layout.a_scane, this);40 mAnotherScene =41 Scene.getSceneForLayout(mSceneRoot, R.layout.another_scene, this);42 43 //create transition, set properties44 final Transition transition = new AutoTransition();45 transition.setDuration(5000);46 transition.setInterpolator(new AccelerateDecelerateInterpolator());47 48 Button startTransition = (Button) findViewById(R.id.transition);49 startTransition.setOnClickListener(new View.OnClickListener() {50 @Override51 public void onClick(View v) {52 if (first) {53 //使用預設的transition54 TransitionManager.go(mAnotherScene, transition);55 first = false;56 } else {57 TransitionManager.go(mAScene, transition);58 first = true;59 }60 }61 });62 }63 64 65 }
activity_main.xml
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:id="@+id/master_layout" 3 android:layout_width="match_parent" 4 android:orientation="vertical" 5 android:layout_height="match_parent"> 6 7 <Button 8 android:id="@+id/transition" 9 android:layout_width="match_parent"10 android:layout_height="wrap_content"11 android:text="startTransition"/>12 13 <FrameLayout android:id="@+id/scene_root"14 android:layout_height="wrap_content"15 android:layout_width="wrap_content">16 <include layout="@layout/a_scane" />17 </FrameLayout>18 19 </LinearLayout>
a_scene.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scene_container" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" > <TextView android:id="@+id/text_view1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Text Line 1" /> <TextView android:id="@+id/text_view2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Text Line 2" /></LinearLayout>
another_scene.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scene_container" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/text_view2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Text Line 2" /> <TextView android:id="@+id/text_view1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Text Line 1" /></LinearLayout>
架構圖:
總結:
布局檔案a_scene.xml,another_scene.xml裡面的View有相同的id, 且包含在同一個RootView下。
Android-Transitions使用