Loading core/java/android/transition/ChangeImageTransform.java +13 −32 Original line number Diff line number Diff line Loading @@ -97,22 +97,13 @@ public class ChangeImageTransform extends Transition { values.put(PROPNAME_BOUNDS, bounds); Matrix matrix; ImageView.ScaleType scaleType = imageView.getScaleType(); if (scaleType == ImageView.ScaleType.FIT_XY) { matrix = imageView.getImageMatrix(); if (!matrix.isIdentity()) { matrix = new Matrix(matrix); } else { int drawableWidth = drawable.getIntrinsicWidth(); int drawableHeight = drawable.getIntrinsicHeight(); if (drawableWidth > 0 && drawableHeight > 0) { if (scaleType == ImageView.ScaleType.FIT_XY && drawableWidth > 0 && drawableHeight > 0) { float scaleX = ((float) bounds.width()) / drawableWidth; float scaleY = ((float) bounds.height()) / drawableHeight; matrix = new Matrix(); matrix.setScale(scaleX, scaleY); } else { matrix = null; } } } else { matrix = new Matrix(imageView.getImageMatrix()); } Loading Loading @@ -152,17 +143,13 @@ public class ChangeImageTransform extends Transition { } Rect startBounds = (Rect) startValues.values.get(PROPNAME_BOUNDS); Rect endBounds = (Rect) endValues.values.get(PROPNAME_BOUNDS); if (startBounds == null || endBounds == null) { return null; } Matrix startMatrix = (Matrix) startValues.values.get(PROPNAME_MATRIX); Matrix endMatrix = (Matrix) endValues.values.get(PROPNAME_MATRIX); if (startBounds == null || endBounds == null || startMatrix == null || endMatrix == null) { return null; } boolean matricesEqual = (startMatrix == null && endMatrix == null) || (startMatrix != null && startMatrix.equals(endMatrix)); if (startBounds.equals(endBounds) && matricesEqual) { if (startBounds.equals(endBounds) && startMatrix.equals(endMatrix)) { return null; } Loading @@ -172,15 +159,9 @@ public class ChangeImageTransform extends Transition { int drawableHeight = drawable.getIntrinsicHeight(); ObjectAnimator animator; if (drawableWidth == 0 || drawableHeight == 0) { if (drawableWidth <= 0 || drawableHeight <= 0) { animator = createNullAnimator(imageView); } else { if (startMatrix == null) { startMatrix = Matrix.IDENTITY_MATRIX; } if (endMatrix == null) { endMatrix = Matrix.IDENTITY_MATRIX; } ANIMATED_TRANSFORM_PROPERTY.set(imageView, startMatrix); animator = createMatrixAnimator(imageView, startMatrix, endMatrix); } Loading @@ -189,7 +170,7 @@ public class ChangeImageTransform extends Transition { private ObjectAnimator createNullAnimator(ImageView imageView) { return ObjectAnimator.ofObject(imageView, ANIMATED_TRANSFORM_PROPERTY, NULL_MATRIX_EVALUATOR, null, null); NULL_MATRIX_EVALUATOR, Matrix.IDENTITY_MATRIX, Matrix.IDENTITY_MATRIX); } private ObjectAnimator createMatrixAnimator(final ImageView imageView, Matrix startMatrix, Loading core/java/android/widget/ImageView.java +3 −1 Original line number Diff line number Diff line Loading @@ -1338,7 +1338,9 @@ public class ImageView extends View { return; } if (matrix == null) { mDrawable.setBounds(0, 0, getWidth(), getHeight()); final int vwidth = getWidth() - mPaddingLeft - mPaddingRight; final int vheight = getHeight() - mPaddingTop - mPaddingBottom; mDrawable.setBounds(0, 0, vwidth, vheight); } else { mDrawable.setBounds(0, 0, mDrawableWidth, mDrawableHeight); if (mDrawMatrix == null) { Loading Loading
core/java/android/transition/ChangeImageTransform.java +13 −32 Original line number Diff line number Diff line Loading @@ -97,22 +97,13 @@ public class ChangeImageTransform extends Transition { values.put(PROPNAME_BOUNDS, bounds); Matrix matrix; ImageView.ScaleType scaleType = imageView.getScaleType(); if (scaleType == ImageView.ScaleType.FIT_XY) { matrix = imageView.getImageMatrix(); if (!matrix.isIdentity()) { matrix = new Matrix(matrix); } else { int drawableWidth = drawable.getIntrinsicWidth(); int drawableHeight = drawable.getIntrinsicHeight(); if (drawableWidth > 0 && drawableHeight > 0) { if (scaleType == ImageView.ScaleType.FIT_XY && drawableWidth > 0 && drawableHeight > 0) { float scaleX = ((float) bounds.width()) / drawableWidth; float scaleY = ((float) bounds.height()) / drawableHeight; matrix = new Matrix(); matrix.setScale(scaleX, scaleY); } else { matrix = null; } } } else { matrix = new Matrix(imageView.getImageMatrix()); } Loading Loading @@ -152,17 +143,13 @@ public class ChangeImageTransform extends Transition { } Rect startBounds = (Rect) startValues.values.get(PROPNAME_BOUNDS); Rect endBounds = (Rect) endValues.values.get(PROPNAME_BOUNDS); if (startBounds == null || endBounds == null) { return null; } Matrix startMatrix = (Matrix) startValues.values.get(PROPNAME_MATRIX); Matrix endMatrix = (Matrix) endValues.values.get(PROPNAME_MATRIX); if (startBounds == null || endBounds == null || startMatrix == null || endMatrix == null) { return null; } boolean matricesEqual = (startMatrix == null && endMatrix == null) || (startMatrix != null && startMatrix.equals(endMatrix)); if (startBounds.equals(endBounds) && matricesEqual) { if (startBounds.equals(endBounds) && startMatrix.equals(endMatrix)) { return null; } Loading @@ -172,15 +159,9 @@ public class ChangeImageTransform extends Transition { int drawableHeight = drawable.getIntrinsicHeight(); ObjectAnimator animator; if (drawableWidth == 0 || drawableHeight == 0) { if (drawableWidth <= 0 || drawableHeight <= 0) { animator = createNullAnimator(imageView); } else { if (startMatrix == null) { startMatrix = Matrix.IDENTITY_MATRIX; } if (endMatrix == null) { endMatrix = Matrix.IDENTITY_MATRIX; } ANIMATED_TRANSFORM_PROPERTY.set(imageView, startMatrix); animator = createMatrixAnimator(imageView, startMatrix, endMatrix); } Loading @@ -189,7 +170,7 @@ public class ChangeImageTransform extends Transition { private ObjectAnimator createNullAnimator(ImageView imageView) { return ObjectAnimator.ofObject(imageView, ANIMATED_TRANSFORM_PROPERTY, NULL_MATRIX_EVALUATOR, null, null); NULL_MATRIX_EVALUATOR, Matrix.IDENTITY_MATRIX, Matrix.IDENTITY_MATRIX); } private ObjectAnimator createMatrixAnimator(final ImageView imageView, Matrix startMatrix, Loading
core/java/android/widget/ImageView.java +3 −1 Original line number Diff line number Diff line Loading @@ -1338,7 +1338,9 @@ public class ImageView extends View { return; } if (matrix == null) { mDrawable.setBounds(0, 0, getWidth(), getHeight()); final int vwidth = getWidth() - mPaddingLeft - mPaddingRight; final int vheight = getHeight() - mPaddingTop - mPaddingBottom; mDrawable.setBounds(0, 0, vwidth, vheight); } else { mDrawable.setBounds(0, 0, mDrawableWidth, mDrawableHeight); if (mDrawMatrix == null) { Loading