blob: 289bbd59f0617d78ae73789dd23e5d13b3b81f87 [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.apis.animation;
import com.example.android.apis.R;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.transition.MoveImage;
import android.transition.Slide;
import android.transition.TransitionManager;
import android.transition.TransitionSet;
import android.util.ArrayMap;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import java.util.Random;
/**
*
*/
public class ActivityTransition extends Activity {
private static final String TAG = "ActivityTransition";
private static final String KEY_ID = "ViewTransitionValues:id";
private Random mRandom = new Random();
private ImageView mHero;
public static final int[] DRAWABLES = {
R.drawable.ball,
R.drawable.block,
R.drawable.ducky,
R.drawable.jellies,
R.drawable.mug,
R.drawable.pencil,
R.drawable.scissors,
R.drawable.woot,
};
public static final int[] IDS = {
R.id.ball,
R.id.block,
R.id.ducky,
R.id.jellies,
R.id.mug,
R.id.pencil,
R.id.scissors,
R.id.woot,
};
public static final String[] NAMES = {
"ball",
"block",
"ducky",
"jellies",
"mug",
"pencil",
"scissors",
"woot",
};
public static int getIdForKey(String id) {
return IDS[getIndexForKey(id)];
}
public static int getDrawableIdForKey(String id) {
return DRAWABLES[getIndexForKey(id)];
}
public static int getIndexForKey(String id) {
for (int i = 0; i < NAMES.length; i++) {
String name = NAMES[i];
if (name.equals(id)) {
return i;
}
}
return 2;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setAllowOverlappingEnterTransition(true);
getWindow().setAllowOverlappingExitTransition(true);
getWindow().setBackgroundDrawable(new ColorDrawable(randomColor()));
setContentView(R.layout.image_block);
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() {
String name = getIntent().getStringExtra(KEY_ID);
mHero = null;
if (name != null) {
mHero = (ImageView) findViewById(getIdForKey(name));
ArrayMap<String, String> sharedElementsMap = new ArrayMap<String, String>();
sharedElementsMap.put("hero", mHero.getSharedElementName());
getWindow().mapTransitionTargets(sharedElementsMap);
}
}
public void clicked(View v) {
mHero = (ImageView) v;
Intent intent = new Intent(this, ActivityTransitionDetails.class);
intent.putExtra(KEY_ID, v.getSharedElementName());
ActivityOptions activityOptions
= ActivityOptions.makeSceneTransitionAnimation(mHero, "hero");
startActivity(intent, activityOptions.toBundle());
}
private int randomColor() {
int red = mRandom.nextInt(128);
int green = mRandom.nextInt(128);
int blue = mRandom.nextInt(128);
return 0xFF000000 | (red << 16) | (green << 8) | blue;
}
}