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