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.view.View; 23f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.view.ViewGroup; 24f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport android.widget.ImageView; 25f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 26def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.core.view.ViewCompat; 27def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.ChangeClipBounds; 28def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.TransitionManager; 29def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 30f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakiimport com.example.android.support.transition.R; 31f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 32f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki/** 33f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki * This demonstrates usage of {@link ChangeClipBounds}. 34f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki */ 35f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Arakipublic class ChangeClipBoundsUsage extends TransitionUsageBase { 36f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 37f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki private static final Rect BOUNDS = new Rect(20, 20, 100, 100); 38f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 39f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki private final ChangeClipBounds mChangeClipBounds = new ChangeClipBounds(); 40f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki private ViewGroup mRoot; 41f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki private ImageView mPhoto; 42f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 43f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki @Override 44f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki int getLayoutResId() { 45f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki return R.layout.clip_bounds; 46f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki } 47f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 48f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki @Override 49f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki protected void onCreate(Bundle savedInstanceState) { 50f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki super.onCreate(savedInstanceState); 51fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mRoot = findViewById(R.id.root); 52fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mPhoto = findViewById(R.id.photo); 53f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() { 54f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki @Override 55f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki public void onClick(View v) { 56f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki toggle(); 57f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki } 58f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki }); 59f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki } 60f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 61f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki void toggle() { 62f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki TransitionManager.beginDelayedTransition(mRoot, mChangeClipBounds); 63f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki if (BOUNDS.equals(ViewCompat.getClipBounds(mPhoto))) { 64f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki ViewCompat.setClipBounds(mPhoto, null); 65f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki } else { 66f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki ViewCompat.setClipBounds(mPhoto, BOUNDS); 67f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki } 68f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki } 69f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki 70f137a45c77ee2e753262dc3c5f691fdcfd75053bYuichi Araki} 71