1/*
2 * Copyright (C) 2017 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
17package com.example.android.support.transition.widget;
18
19import android.os.Bundle;
20import android.view.View;
21import android.widget.FrameLayout;
22import android.widget.ImageView;
23
24import androidx.transition.ChangeImageTransform;
25import androidx.transition.ChangeTransform;
26import androidx.transition.TransitionManager;
27import androidx.transition.TransitionSet;
28
29import com.example.android.support.transition.R;
30
31/**
32 * Demonstrates combination usage of ChangeTransform and ChangeImageTransform.
33 */
34public class ReparentImageUsage extends TransitionUsageBase {
35
36    FrameLayout mOuterFrame;
37    FrameLayout mInnerFrame;
38    TransitionSet mTransition;
39    int mPhotoSize;
40
41    @Override
42    int getLayoutResId() {
43        return R.layout.reparent_image;
44    }
45
46    @Override
47    protected void onCreate(Bundle savedInstanceState) {
48        super.onCreate(savedInstanceState);
49        mOuterFrame = findViewById(R.id.outer_frame);
50        mInnerFrame = findViewById(R.id.inner_frame);
51        mPhotoSize = getResources().getDimensionPixelSize(R.dimen.photo_size);
52
53        mTransition = new TransitionSet();
54        mTransition.addTransition(new ChangeImageTransform());
55        mTransition.addTransition(new ChangeTransform());
56
57        addImageView(mOuterFrame, ImageView.ScaleType.CENTER_CROP, mPhotoSize);
58        findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() {
59            @Override
60            public void onClick(View v) {
61                TransitionManager.beginDelayedTransition(mOuterFrame, mTransition);
62                if (mInnerFrame.getChildCount() > 0) {
63                    mInnerFrame.removeAllViews();
64                    addImageView(mOuterFrame, ImageView.ScaleType.CENTER_CROP, mPhotoSize);
65                } else {
66                    mOuterFrame.removeViewAt(1);
67                    addImageView(mInnerFrame, ImageView.ScaleType.FIT_XY,
68                            FrameLayout.LayoutParams.MATCH_PARENT);
69                }
70            }
71        });
72    }
73
74    private void addImageView(FrameLayout parent, ImageView.ScaleType scaleType, int size) {
75        final ImageView photo = new ImageView(this);
76        photo.setImageResource(R.drawable.photo);
77        photo.setId(R.id.photo);
78        photo.setScaleType(scaleType);
79        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(size, size);
80        parent.addView(photo, lp);
81    }
82
83}
84