/* * Copyright (C) 2015 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.android.test.uibench; import android.app.ActivityOptions; import android.app.SharedElementCallback; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.GridLayout; import android.widget.ImageView; import java.util.List; import java.util.Map; public class ActivityTransition extends AppCompatActivity { private static final String KEY_ID = "ViewTransitionValues:id"; 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); getWindow().setBackgroundDrawable(new ColorDrawable(Color.BLACK)); setContentView(R.layout.activity_transition); setupHero(); // Ensure that all images are visible regardless of orientation. GridLayout gridLayout = (GridLayout) findViewById(R.id.transition_grid_layout); boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; gridLayout.setRowCount(isPortrait ? 4 : 2); gridLayout.setColumnCount(isPortrait ? 2 : 4); } private void setupHero() { String name = getIntent().getStringExtra(KEY_ID); mHero = null; if (name != null) { mHero = (ImageView) findViewById(getIdForKey(name)); setEnterSharedElementCallback(new SharedElementCallback() { @Override public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) { sharedElements.put("hero", mHero); } }); } } public void clicked(View v) { mHero = (ImageView) v; Intent intent = new Intent(this, ActivityTransitionDetails.class); intent.putExtra(KEY_ID, v.getTransitionName()); ActivityOptions activityOptions = ActivityOptions.makeSceneTransitionAnimation(this, mHero, "hero"); startActivity(intent, activityOptions.toBundle()); } }