1fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki/*
2fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * Copyright (C) 2017 The Android Open Source Project
3fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki *
4fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
5fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * you may not use this file except in compliance with the License.
6fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * You may obtain a copy of the License at
7fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki *
8fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
9fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki *
10fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * Unless required by applicable law or agreed to in writing, software
11fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
12fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * See the License for the specific language governing permissions and
14fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * limitations under the License.
15fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki */
16fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
17fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakipackage com.example.android.support.transition.widget;
18fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
19fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.os.Bundle;
20fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.support.transition.ChangeImageTransform;
21fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.support.transition.ChangeTransform;
22fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.support.transition.TransitionManager;
23fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.support.transition.TransitionSet;
24fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.view.View;
25fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.widget.FrameLayout;
26fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.widget.ImageView;
27fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
28fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport com.example.android.support.transition.R;
29fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
30fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki/**
31fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * Demonstrates combination usage of ChangeTransform and ChangeImageTransform.
32fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki */
33fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakipublic class ReparentImageUsage extends TransitionUsageBase {
34fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
35fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    FrameLayout mOuterFrame;
36fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    FrameLayout mInnerFrame;
37fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    TransitionSet mTransition;
38fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    int mPhotoSize;
39fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
40fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    @Override
41fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    int getLayoutResId() {
42fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        return R.layout.reparent_image;
43fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
44fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
45fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    @Override
46fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    protected void onCreate(Bundle savedInstanceState) {
47fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        super.onCreate(savedInstanceState);
48fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mOuterFrame = findViewById(R.id.outer_frame);
49fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mInnerFrame = findViewById(R.id.inner_frame);
50fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        mPhotoSize = getResources().getDimensionPixelSize(R.dimen.photo_size);
51fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
52fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        mTransition = new TransitionSet();
53fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        mTransition.addTransition(new ChangeImageTransform());
54fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        mTransition.addTransition(new ChangeTransform());
55fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
56fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        addImageView(mOuterFrame, ImageView.ScaleType.CENTER_CROP, mPhotoSize);
57fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() {
58fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            @Override
59fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            public void onClick(View v) {
60fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                TransitionManager.beginDelayedTransition(mOuterFrame, mTransition);
61fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                if (mInnerFrame.getChildCount() > 0) {
62fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                    mInnerFrame.removeAllViews();
63fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                    addImageView(mOuterFrame, ImageView.ScaleType.CENTER_CROP, mPhotoSize);
64fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                } else {
65fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                    mOuterFrame.removeViewAt(1);
66fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                    addImageView(mInnerFrame, ImageView.ScaleType.FIT_XY,
67fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                            FrameLayout.LayoutParams.MATCH_PARENT);
68fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                }
69fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            }
70fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        });
71fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
72fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
73fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    private void addImageView(FrameLayout parent, ImageView.ScaleType scaleType, int size) {
74fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        final ImageView photo = new ImageView(this);
75fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        photo.setImageResource(R.drawable.photo);
76fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        photo.setId(R.id.photo);
77fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        photo.setScaleType(scaleType);
78fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(size, size);
79fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        parent.addView(photo, lp);
80fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
81fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
82fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki}
83