Skip to content

Most visited

Recently visited

navigation
ActivitySceneTransitionBasic / src / com.example.android.activityscenetransitionbasic /

MainActivity.java

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

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)