این وبسایت یک نسخه آزمایشی از سایت developer android می‌باشد که در حال ترجمه می‌باشد.
برای پیوستن به تیم ترجمه و خواندن مستندات اینجا کلیک کنید.
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