Use new Quantum Paper Activity Transitions API.
Change-Id: Ia487e02e8cb7a90bd14b0e09392eddac5c1a06ec
This commit is contained in:
@@ -1295,7 +1295,7 @@
|
|||||||
|
|
||||||
<activity android:name=".animation.ActivityTransition"
|
<activity android:name=".animation.ActivityTransition"
|
||||||
android:label="Animation/Activity Transition"
|
android:label="Animation/Activity Transition"
|
||||||
android:enabled="@bool/atLeastHoneycomb"
|
android:enabled="@bool/atLeastLRelease"
|
||||||
android:theme="@style/ActivityTransitionTheme">
|
android:theme="@style/ActivityTransitionTheme">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
@@ -1305,7 +1305,7 @@
|
|||||||
|
|
||||||
<activity android:name=".animation.ActivityTransitionDetails"
|
<activity android:name=".animation.ActivityTransitionDetails"
|
||||||
android:label="Animation/Details of a specific thingy"
|
android:label="Animation/Details of a specific thingy"
|
||||||
android:enabled="@bool/atLeastHoneycomb"
|
android:enabled="@bool/atLeastLRelease"
|
||||||
android:theme="@style/ActivityTransitionTheme">
|
android:theme="@style/ActivityTransitionTheme">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|||||||
@@ -26,10 +26,4 @@
|
|||||||
<!-- For API level XX or later, we can use the magical DialogWhenLarge theme. -->
|
<!-- For API level XX or later, we can use the magical DialogWhenLarge theme. -->
|
||||||
<style name="ThemeCurrentDialogWhenLarge" parent="android:style/Theme.Quantum.DialogWhenLarge">
|
<style name="ThemeCurrentDialogWhenLarge" parent="android:style/Theme.Quantum.DialogWhenLarge">
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="ActivityTransitionTheme" parent="android:style/Theme.Quantum">
|
|
||||||
<item name="android:windowIsTranslucent">true</item>
|
|
||||||
<item name="android:windowBackground">@android:color/transparent</item>
|
|
||||||
<item name="android:windowContentTransitionManager">@transition/activity_transition_mgr</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -26,10 +26,4 @@
|
|||||||
<!-- For API level XX or later, we can use the magical DialogWhenLarge theme. -->
|
<!-- For API level XX or later, we can use the magical DialogWhenLarge theme. -->
|
||||||
<style name="ThemeCurrentDialogWhenLarge" parent="android:style/Theme.Quantum.Light.DialogWhenLarge">
|
<style name="ThemeCurrentDialogWhenLarge" parent="android:style/Theme.Quantum.Light.DialogWhenLarge">
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="ActivityTransitionTheme" parent="android:style/Theme.Quantum.Light">
|
|
||||||
<item name="android:windowIsTranslucent">true</item>
|
|
||||||
<item name="android:windowBackground">@android:color/transparent</item>
|
|
||||||
<item name="android:windowContentTransitionManager">@transition/activity_transition_mgr</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -120,10 +120,14 @@
|
|||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="ActivityTransitionTheme" parent="android:style/Theme.Holo">
|
<style name="ActivityTransitionTheme" parent="android:Theme.Quantum">
|
||||||
<item name="android:windowIsTranslucent">true</item>
|
<item name="android:windowEnterTransition">@transition/explode</item>
|
||||||
<item name="android:windowBackground">@android:color/transparent</item>
|
<item name="android:windowExitTransition">@transition/explode</item>
|
||||||
<item name="android:windowContentTransitionManager">@transition/activity_transition_mgr</item>
|
<item name="android:windowSharedElementEnterTransition">@transition/move_image</item>
|
||||||
|
<item name="android:windowSharedElementExitTransition">@transition/move_image</item>
|
||||||
|
<item name="android:windowAllowExitTransitionOverlap">true</item>
|
||||||
|
<item name="android:windowAllowEnterTransitionOverlap">false</item>
|
||||||
|
<item name="android:windowContentTransitions">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -22,17 +22,10 @@ import android.app.ActivityOptions;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.transition.MoveImage;
|
import android.util.Pair;
|
||||||
import android.transition.Slide;
|
|
||||||
import android.transition.TransitionManager;
|
|
||||||
import android.transition.TransitionSet;
|
|
||||||
import android.util.ArrayMap;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -42,8 +35,6 @@ public class ActivityTransition extends Activity {
|
|||||||
|
|
||||||
private static final String KEY_ID = "ViewTransitionValues:id";
|
private static final String KEY_ID = "ViewTransitionValues:id";
|
||||||
|
|
||||||
private Random mRandom = new Random();
|
|
||||||
|
|
||||||
private ImageView mHero;
|
private ImageView mHero;
|
||||||
|
|
||||||
public static final int[] DRAWABLES = {
|
public static final int[] DRAWABLES = {
|
||||||
@@ -100,20 +91,9 @@ public class ActivityTransition extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);
|
|
||||||
getWindow().setAllowOverlappingEnterTransition(true);
|
|
||||||
getWindow().setAllowOverlappingExitTransition(true);
|
|
||||||
getWindow().setBackgroundDrawable(new ColorDrawable(randomColor()));
|
getWindow().setBackgroundDrawable(new ColorDrawable(randomColor()));
|
||||||
setContentView(R.layout.image_block);
|
setContentView(R.layout.image_block);
|
||||||
setupHero();
|
setupHero();
|
||||||
TransitionManager transitionManager = getContentTransitionManager();
|
|
||||||
TransitionSet transitions = new TransitionSet();
|
|
||||||
Slide slide = new Slide();
|
|
||||||
slide.setDuration(600);
|
|
||||||
transitions.addTransition(slide);
|
|
||||||
transitions.addTransition(new MoveImage());
|
|
||||||
transitionManager.setTransition(getContentScene(), transitions);
|
|
||||||
transitionManager.setExitTransition(getContentScene(), transitions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupHero() {
|
private void setupHero() {
|
||||||
@@ -121,9 +101,12 @@ public class ActivityTransition extends Activity {
|
|||||||
mHero = null;
|
mHero = null;
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
mHero = (ImageView) findViewById(getIdForKey(name));
|
mHero = (ImageView) findViewById(getIdForKey(name));
|
||||||
ArrayMap<String, String> sharedElementsMap = new ArrayMap<String, String>();
|
setActivityTransitionListener(new ActivityOptions.ActivityTransitionListener() {
|
||||||
sharedElementsMap.put("hero", mHero.getSharedElementName());
|
@Override
|
||||||
getWindow().mapTransitionTargets(sharedElementsMap);
|
public Pair<View, String>[] getSharedElementsMapping() {
|
||||||
|
return new Pair[] { Pair.create((View)mHero, "hero") };
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,14 +115,14 @@ public class ActivityTransition extends Activity {
|
|||||||
Intent intent = new Intent(this, ActivityTransitionDetails.class);
|
Intent intent = new Intent(this, ActivityTransitionDetails.class);
|
||||||
intent.putExtra(KEY_ID, v.getSharedElementName());
|
intent.putExtra(KEY_ID, v.getSharedElementName());
|
||||||
ActivityOptions activityOptions
|
ActivityOptions activityOptions
|
||||||
= ActivityOptions.makeSceneTransitionAnimation(mHero, "hero");
|
= ActivityOptions.makeSceneTransitionAnimation(getWindow(), mHero, "hero");
|
||||||
startActivity(intent, activityOptions.toBundle());
|
startActivity(intent, activityOptions.toBundle());
|
||||||
}
|
}
|
||||||
|
|
||||||
private int randomColor() {
|
private static int randomColor() {
|
||||||
int red = mRandom.nextInt(128);
|
int red = (int)(Math.random() * 128);
|
||||||
int green = mRandom.nextInt(128);
|
int green = (int)(Math.random() * 128);
|
||||||
int blue = mRandom.nextInt(128);
|
int blue = (int)(Math.random() * 128);
|
||||||
return 0xFF000000 | (red << 16) | (green << 8) | blue;
|
return 0xFF000000 | (red << 16) | (green << 8) | blue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,16 +23,9 @@ import android.content.Intent;
|
|||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.transition.MoveImage;
|
|
||||||
import android.transition.Slide;
|
|
||||||
import android.transition.TransitionManager;
|
|
||||||
import android.transition.TransitionSet;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -42,8 +35,6 @@ public class ActivityTransitionDetails extends Activity {
|
|||||||
|
|
||||||
private static final String KEY_ID = "ViewTransitionValues:id";
|
private static final String KEY_ID = "ViewTransitionValues:id";
|
||||||
|
|
||||||
private Random mRandom = new Random();
|
|
||||||
|
|
||||||
private int mImageResourceId = R.drawable.ducky;
|
private int mImageResourceId = R.drawable.ducky;
|
||||||
|
|
||||||
private String mName = "ducky";
|
private String mName = "ducky";
|
||||||
@@ -51,23 +42,10 @@ public class ActivityTransitionDetails extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);
|
|
||||||
getWindow().setAllowOverlappingEnterTransition(false);
|
|
||||||
getWindow().setAllowOverlappingExitTransition(true);
|
|
||||||
getWindow().setBackgroundDrawable(new ColorDrawable(randomColor()));
|
getWindow().setBackgroundDrawable(new ColorDrawable(randomColor()));
|
||||||
setContentView(R.layout.image_details);
|
setContentView(R.layout.image_details);
|
||||||
ImageView titleImage = (ImageView) findViewById(R.id.titleImage);
|
ImageView titleImage = (ImageView) findViewById(R.id.titleImage);
|
||||||
titleImage.setImageDrawable(getHeroDrawable());
|
titleImage.setImageDrawable(getHeroDrawable());
|
||||||
|
|
||||||
TransitionManager transitionManager = getContentTransitionManager();
|
|
||||||
TransitionSet transitions = new TransitionSet();
|
|
||||||
|
|
||||||
Slide slide = new Slide();
|
|
||||||
slide.setDuration(600);
|
|
||||||
transitions.addTransition(slide);
|
|
||||||
transitions.addTransition(new MoveImage());
|
|
||||||
transitionManager.setTransition(getContentScene(), transitions);
|
|
||||||
transitionManager.setExitTransition(getContentScene(), transitions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Drawable getHeroDrawable() {
|
private Drawable getHeroDrawable() {
|
||||||
@@ -83,15 +61,15 @@ public class ActivityTransitionDetails extends Activity {
|
|||||||
public void clicked(View v) {
|
public void clicked(View v) {
|
||||||
Intent intent = new Intent(this, ActivityTransition.class);
|
Intent intent = new Intent(this, ActivityTransition.class);
|
||||||
intent.putExtra(KEY_ID, mName);
|
intent.putExtra(KEY_ID, mName);
|
||||||
ActivityOptions activityOptions = ActivityOptions.makeSceneTransitionAnimation(v, "hero");
|
ActivityOptions activityOptions = ActivityOptions.makeSceneTransitionAnimation(getWindow(),
|
||||||
|
v, "hero");
|
||||||
startActivity(intent, activityOptions.toBundle());
|
startActivity(intent, activityOptions.toBundle());
|
||||||
}
|
}
|
||||||
|
|
||||||
private int randomColor() {
|
private static int randomColor() {
|
||||||
int red = mRandom.nextInt(128);
|
int red = (int)(Math.random() * 128);
|
||||||
int green = mRandom.nextInt(128);
|
int green = (int)(Math.random() * 128);
|
||||||
int blue = mRandom.nextInt(128);
|
int blue = (int)(Math.random() * 128);
|
||||||
return 0xFF000000 | (red << 16) | (green << 8) | blue;
|
return 0xFF000000 | (red << 16) | (green << 8) | blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user