1f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki/*
2f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * Copyright (C) 2017 The Android Open Source Project
3f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki *
4f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
5f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * you may not use this file except in compliance with the License.
6f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * You may obtain a copy of the License at
7f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki *
8f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
9f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki *
10f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * Unless required by applicable law or agreed to in writing, software
11f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
12f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * See the License for the specific language governing permissions and
14f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * limitations under the License.
15f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki */
16f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
17f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakipackage com.example.android.support.transition.widget;
18f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
19f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
20f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.graphics.Rect;
21f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.os.Bundle;
22f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.support.transition.ChangeClipBounds;
23f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.support.transition.TransitionManager;
24f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.support.v4.view.ViewCompat;
25f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.view.View;
26f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.view.ViewGroup;
27f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.widget.ImageView;
28f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
29f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport com.example.android.support.transition.R;
30f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
31f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki/**
32f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * This demonstrates usage of {@link ChangeClipBounds}.
33f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki */
34f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakipublic class ChangeClipBoundsUsage extends TransitionUsageBase {
35f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
36f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    private static final Rect BOUNDS = new Rect(20, 20, 100, 100);
37f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
38f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    private final ChangeClipBounds mChangeClipBounds = new ChangeClipBounds();
39f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    private ViewGroup mRoot;
40f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    private ImageView mPhoto;
41f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
42f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    @Override
43f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    int getLayoutResId() {
44f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        return R.layout.clip_bounds;
45f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    }
46f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
47f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    @Override
48f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    protected void onCreate(Bundle savedInstanceState) {
49f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        super.onCreate(savedInstanceState);
50fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mRoot = findViewById(R.id.root);
51fa2e2acf79d791a90410025daad438968550d18cAlan Viverette        mPhoto = findViewById(R.id.photo);
52f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() {
53f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki            @Override
54f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki            public void onClick(View v) {
55f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki                toggle();
56f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki            }
57f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        });
58f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    }
59f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
60f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    void toggle() {
61f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        TransitionManager.beginDelayedTransition(mRoot, mChangeClipBounds);
62f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        if (BOUNDS.equals(ViewCompat.getClipBounds(mPhoto))) {
63f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki            ViewCompat.setClipBounds(mPhoto, null);
64f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        } else {
65f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki            ViewCompat.setClipBounds(mPhoto, BOUNDS);
66f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki        }
67f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki    }
68f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki
69f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki}
70