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