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.graphics.Matrix; 20fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.os.Bundle; 21fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.view.View; 22fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.view.ViewGroup; 23fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.widget.ImageView; 24fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 25def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.ChangeImageTransform; 26def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.Transition; 27def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.transition.TransitionManager; 28def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 29fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport com.example.android.support.transition.R; 30fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 31fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki/** 32fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki * This demonstrates basic usage of the ChangeImageTransform Transition. 33fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki */ 34fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakipublic class ChangeImageTransformUsage extends TransitionUsageBase { 35fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 36fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki private ViewGroup mRoot; 37fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki private ImageView mPhoto; 38fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 39fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki private static final Transition TRANSITION = new ChangeImageTransform(); 40fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 41fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki @Override 42fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki int getLayoutResId() { 43fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki return R.layout.image_transform; 44fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki } 45fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 46fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki @Override 47fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki protected void onCreate(Bundle savedInstanceState) { 48fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki super.onCreate(savedInstanceState); 49fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mRoot = findViewById(R.id.container); 50fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mPhoto = findViewById(R.id.photo); 51fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki final View.OnClickListener listener = new View.OnClickListener() { 52fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki @Override 53fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki public void onClick(View v) { 54fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki TransitionManager.beginDelayedTransition(mRoot, TRANSITION); 55fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki switch (v.getId()) { 56fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki case R.id.fit_xy: 57fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setScaleType(ImageView.ScaleType.FIT_XY); 58fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki break; 59fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki case R.id.center: 60fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setScaleType(ImageView.ScaleType.CENTER); 61fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki break; 62fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki case R.id.center_crop: 63fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setScaleType(ImageView.ScaleType.CENTER_CROP); 64fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki break; 65fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki case R.id.fit_start: 66fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setScaleType(ImageView.ScaleType.FIT_START); 67fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki break; 68fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki case R.id.fit_end: 69fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setScaleType(ImageView.ScaleType.FIT_END); 70fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki break; 71fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki case R.id.matrix: 72fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setScaleType(ImageView.ScaleType.MATRIX); 73fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki final Matrix matrix = new Matrix(); 74fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki matrix.setRotate(45.f); 75fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki matrix.postTranslate(200, 10); 76fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki mPhoto.setImageMatrix(matrix); 77fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki break; 78fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki } 79fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki } 80fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki }; 81fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki findViewById(R.id.fit_xy).setOnClickListener(listener); 82fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki findViewById(R.id.center).setOnClickListener(listener); 83fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki findViewById(R.id.center_crop).setOnClickListener(listener); 84fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki findViewById(R.id.fit_start).setOnClickListener(listener); 85fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki findViewById(R.id.fit_end).setOnClickListener(listener); 86fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki findViewById(R.id.matrix).setOnClickListener(listener); 87fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki } 88fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki 89fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki} 90