1*90c8c64dSAndroid Build Coastguard Worker /* 2*90c8c64dSAndroid Build Coastguard Worker * Copyright (C) 2014 The Android Open Source Project 3*90c8c64dSAndroid Build Coastguard Worker * 4*90c8c64dSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*90c8c64dSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*90c8c64dSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*90c8c64dSAndroid Build Coastguard Worker * 8*90c8c64dSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*90c8c64dSAndroid Build Coastguard Worker * 10*90c8c64dSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*90c8c64dSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*90c8c64dSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*90c8c64dSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*90c8c64dSAndroid Build Coastguard Worker * limitations under the License. 15*90c8c64dSAndroid Build Coastguard Worker */ 16*90c8c64dSAndroid Build Coastguard Worker 17*90c8c64dSAndroid Build Coastguard Worker package com.example.android.activityscenetransitionbasic; 18*90c8c64dSAndroid Build Coastguard Worker 19*90c8c64dSAndroid Build Coastguard Worker import com.squareup.picasso.Picasso; 20*90c8c64dSAndroid Build Coastguard Worker 21*90c8c64dSAndroid Build Coastguard Worker import android.app.Activity; 22*90c8c64dSAndroid Build Coastguard Worker import android.content.Intent; 23*90c8c64dSAndroid Build Coastguard Worker import android.os.Bundle; 24*90c8c64dSAndroid Build Coastguard Worker import android.support.v4.app.ActivityCompat; 25*90c8c64dSAndroid Build Coastguard Worker import android.support.v4.app.ActivityOptionsCompat; 26*90c8c64dSAndroid Build Coastguard Worker import android.support.v4.util.Pair; 27*90c8c64dSAndroid Build Coastguard Worker import android.view.View; 28*90c8c64dSAndroid Build Coastguard Worker import android.view.ViewGroup; 29*90c8c64dSAndroid Build Coastguard Worker import android.widget.AdapterView; 30*90c8c64dSAndroid Build Coastguard Worker import android.widget.BaseAdapter; 31*90c8c64dSAndroid Build Coastguard Worker import android.widget.GridView; 32*90c8c64dSAndroid Build Coastguard Worker import android.widget.ImageView; 33*90c8c64dSAndroid Build Coastguard Worker import android.widget.TextView; 34*90c8c64dSAndroid Build Coastguard Worker 35*90c8c64dSAndroid Build Coastguard Worker /** 36*90c8c64dSAndroid Build Coastguard Worker * Our main Activity in this sample. Displays a grid of items which an image and title. When the 37*90c8c64dSAndroid Build Coastguard Worker * user clicks on an item, {@link DetailActivity} is launched, using the Activity Scene Transitions 38*90c8c64dSAndroid Build Coastguard Worker * framework to animatedly do so. 39*90c8c64dSAndroid Build Coastguard Worker */ 40*90c8c64dSAndroid Build Coastguard Worker public class MainActivity extends Activity implements AdapterView.OnItemClickListener { 41*90c8c64dSAndroid Build Coastguard Worker 42*90c8c64dSAndroid Build Coastguard Worker private GridView mGridView; 43*90c8c64dSAndroid Build Coastguard Worker private GridAdapter mAdapter; 44*90c8c64dSAndroid Build Coastguard Worker 45*90c8c64dSAndroid Build Coastguard Worker @Override onCreate(Bundle savedInstanceState)46*90c8c64dSAndroid Build Coastguard Worker public void onCreate(Bundle savedInstanceState) { 47*90c8c64dSAndroid Build Coastguard Worker super.onCreate(savedInstanceState); 48*90c8c64dSAndroid Build Coastguard Worker setContentView(R.layout.grid); 49*90c8c64dSAndroid Build Coastguard Worker 50*90c8c64dSAndroid Build Coastguard Worker // Setup the GridView and set the adapter 51*90c8c64dSAndroid Build Coastguard Worker mGridView = (GridView) findViewById(R.id.grid); 52*90c8c64dSAndroid Build Coastguard Worker mGridView.setOnItemClickListener(this); 53*90c8c64dSAndroid Build Coastguard Worker mAdapter = new GridAdapter(); 54*90c8c64dSAndroid Build Coastguard Worker mGridView.setAdapter(mAdapter); 55*90c8c64dSAndroid Build Coastguard Worker } 56*90c8c64dSAndroid Build Coastguard Worker 57*90c8c64dSAndroid Build Coastguard Worker /** 58*90c8c64dSAndroid Build Coastguard Worker * Called when an item in the {@link android.widget.GridView} is clicked. Here will launch the 59*90c8c64dSAndroid Build Coastguard Worker * {@link DetailActivity}, using the Scene Transition animation functionality. 60*90c8c64dSAndroid Build Coastguard Worker */ 61*90c8c64dSAndroid Build Coastguard Worker @Override onItemClick(AdapterView<?> adapterView, View view, int position, long id)62*90c8c64dSAndroid Build Coastguard Worker public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 63*90c8c64dSAndroid Build Coastguard Worker Item item = (Item) adapterView.getItemAtPosition(position); 64*90c8c64dSAndroid Build Coastguard Worker 65*90c8c64dSAndroid Build Coastguard Worker // Construct an Intent as normal 66*90c8c64dSAndroid Build Coastguard Worker Intent intent = new Intent(this, DetailActivity.class); 67*90c8c64dSAndroid Build Coastguard Worker intent.putExtra(DetailActivity.EXTRA_PARAM_ID, item.getId()); 68*90c8c64dSAndroid Build Coastguard Worker 69*90c8c64dSAndroid Build Coastguard Worker // BEGIN_INCLUDE(start_activity) 70*90c8c64dSAndroid Build Coastguard Worker /** 71*90c8c64dSAndroid Build Coastguard Worker * Now create an {@link android.app.ActivityOptions} instance using the 72*90c8c64dSAndroid Build Coastguard Worker * {@link ActivityOptionsCompat#makeSceneTransitionAnimation(Activity, Pair[])} factory 73*90c8c64dSAndroid Build Coastguard Worker * method. 74*90c8c64dSAndroid Build Coastguard Worker */ 75*90c8c64dSAndroid Build Coastguard Worker ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation( 76*90c8c64dSAndroid Build Coastguard Worker this, 77*90c8c64dSAndroid Build Coastguard Worker 78*90c8c64dSAndroid Build Coastguard Worker // Now we provide a list of Pair items which contain the view we can transitioning 79*90c8c64dSAndroid Build Coastguard Worker // from, and the name of the view it is transitioning to, in the launched activity 80*90c8c64dSAndroid Build Coastguard Worker new Pair<View, String>(view.findViewById(R.id.imageview_item), 81*90c8c64dSAndroid Build Coastguard Worker DetailActivity.VIEW_NAME_HEADER_IMAGE), 82*90c8c64dSAndroid Build Coastguard Worker new Pair<View, String>(view.findViewById(R.id.textview_name), 83*90c8c64dSAndroid Build Coastguard Worker DetailActivity.VIEW_NAME_HEADER_TITLE)); 84*90c8c64dSAndroid Build Coastguard Worker 85*90c8c64dSAndroid Build Coastguard Worker // Now we can start the Activity, providing the activity options as a bundle 86*90c8c64dSAndroid Build Coastguard Worker ActivityCompat.startActivity(this, intent, activityOptions.toBundle()); 87*90c8c64dSAndroid Build Coastguard Worker // END_INCLUDE(start_activity) 88*90c8c64dSAndroid Build Coastguard Worker } 89*90c8c64dSAndroid Build Coastguard Worker 90*90c8c64dSAndroid Build Coastguard Worker /** 91*90c8c64dSAndroid Build Coastguard Worker * {@link android.widget.BaseAdapter} which displays items. 92*90c8c64dSAndroid Build Coastguard Worker */ 93*90c8c64dSAndroid Build Coastguard Worker private class GridAdapter extends BaseAdapter { 94*90c8c64dSAndroid Build Coastguard Worker 95*90c8c64dSAndroid Build Coastguard Worker @Override getCount()96*90c8c64dSAndroid Build Coastguard Worker public int getCount() { 97*90c8c64dSAndroid Build Coastguard Worker return Item.ITEMS.length; 98*90c8c64dSAndroid Build Coastguard Worker } 99*90c8c64dSAndroid Build Coastguard Worker 100*90c8c64dSAndroid Build Coastguard Worker @Override getItem(int position)101*90c8c64dSAndroid Build Coastguard Worker public Item getItem(int position) { 102*90c8c64dSAndroid Build Coastguard Worker return Item.ITEMS[position]; 103*90c8c64dSAndroid Build Coastguard Worker } 104*90c8c64dSAndroid Build Coastguard Worker 105*90c8c64dSAndroid Build Coastguard Worker @Override getItemId(int position)106*90c8c64dSAndroid Build Coastguard Worker public long getItemId(int position) { 107*90c8c64dSAndroid Build Coastguard Worker return getItem(position).getId(); 108*90c8c64dSAndroid Build Coastguard Worker } 109*90c8c64dSAndroid Build Coastguard Worker 110*90c8c64dSAndroid Build Coastguard Worker @Override getView(int position, View view, ViewGroup viewGroup)111*90c8c64dSAndroid Build Coastguard Worker public View getView(int position, View view, ViewGroup viewGroup) { 112*90c8c64dSAndroid Build Coastguard Worker if (view == null) { 113*90c8c64dSAndroid Build Coastguard Worker view = getLayoutInflater().inflate(R.layout.grid_item, viewGroup, false); 114*90c8c64dSAndroid Build Coastguard Worker } 115*90c8c64dSAndroid Build Coastguard Worker 116*90c8c64dSAndroid Build Coastguard Worker final Item item = getItem(position); 117*90c8c64dSAndroid Build Coastguard Worker 118*90c8c64dSAndroid Build Coastguard Worker // Load the thumbnail image 119*90c8c64dSAndroid Build Coastguard Worker ImageView image = (ImageView) view.findViewById(R.id.imageview_item); 120*90c8c64dSAndroid Build Coastguard Worker Picasso.with(image.getContext()).load(item.getThumbnailUrl()).into(image); 121*90c8c64dSAndroid Build Coastguard Worker 122*90c8c64dSAndroid Build Coastguard Worker // Set the TextView's contents 123*90c8c64dSAndroid Build Coastguard Worker TextView name = (TextView) view.findViewById(R.id.textview_name); 124*90c8c64dSAndroid Build Coastguard Worker name.setText(item.getName()); 125*90c8c64dSAndroid Build Coastguard Worker 126*90c8c64dSAndroid Build Coastguard Worker return view; 127*90c8c64dSAndroid Build Coastguard Worker } 128*90c8c64dSAndroid Build Coastguard Worker } 129*90c8c64dSAndroid Build Coastguard Worker } 130