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 android.support.transition;
18fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
19fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.animation.Animator;
20fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.animation.AnimatorListenerAdapter;
21fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.graphics.Matrix;
22fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.support.annotation.RequiresApi;
23fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiimport android.widget.ImageView;
24fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
25fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki@RequiresApi(14)
26fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Arakiclass ImageViewUtilsApi14 implements ImageViewUtilsImpl {
27fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
28fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    @Override
29fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    public void startAnimateTransform(ImageView view) {
30fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        final ImageView.ScaleType scaleType = view.getScaleType();
31fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        view.setTag(R.id.save_scale_type, scaleType);
32fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        if (scaleType == ImageView.ScaleType.MATRIX) {
33fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            view.setTag(R.id.save_image_matrix, view.getImageMatrix());
34fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        } else {
35fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            view.setScaleType(ImageView.ScaleType.MATRIX);
36fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        }
37fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        view.setImageMatrix(MatrixUtils.IDENTITY_MATRIX);
38fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
39fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
40fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    @Override
41fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    public void animateTransform(ImageView view, Matrix matrix) {
42fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        view.setImageMatrix(matrix);
43fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
44fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
45fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    @Override
46fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    public void reserveEndAnimateTransform(final ImageView view, Animator animator) {
47fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        animator.addListener(new AnimatorListenerAdapter() {
48fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            @Override
49fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            public void onAnimationEnd(Animator animation) {
50fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                final ImageView.ScaleType scaleType = (ImageView.ScaleType)
51fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                        view.getTag(R.id.save_scale_type);
52fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                view.setScaleType(scaleType);
53fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                view.setTag(R.id.save_scale_type, null);
54fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                if (scaleType == ImageView.ScaleType.MATRIX) {
55fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                    view.setImageMatrix((Matrix) view.getTag(R.id.save_image_matrix));
56fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                    view.setTag(R.id.save_image_matrix, null);
57fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                }
58fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki                animation.removeListener(this);
59fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki            }
60fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki        });
61fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki    }
62fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki
63fdfa819aa29e12734eb90101f5f40d2636a5f1aeYuichi Araki}
64