可滚动显示图片的 ImageView —— PanningImageView

前言 参考这篇博文,在此基础上,做了些改进。比如,用 ValueAnimator 代替 ObjectAnimator, 代码更加简洁(在这种情况下,Value

前言

参考这篇博文,在此基础上,做了些改进。比如,用 ValueAnimator 代替 ObjectAnimator, 代码更加简洁(在这种情况下,ValueAnimator 比 ObjectAnimator 更加方便,自定义控件就不自定义属性了)。此外,设置 Animator 的 RepeatMode 为 Reverse,不用如同博客里面的样子切换方向。最后,对各种尺寸的图片的支持。当不 panning 的时候,centerCrop 显示。

原理

简单来说,不断的改变 ImageView 的 Matrix。(所以要setScaleType(ScaleType.MATRIX);)使用 ValueAnimator 做节拍器。剩下的逻辑就是判断控件的尺寸和图像的尺寸,确定要不要滚动显示,并计算出scaleRatiotranslateXtranslateY

效果图

这里写图片描述

源码

package com.sinaapp.myron.panningimageviewdemo;import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.widget.ImageView;p