ImageView通过SetImageMatrix进行图片缩放屡见不鲜。但是如何获得当前缩放图片的位置信息呢?

用ImageState存储图片绘制信息:

   
   
   
   
  1. public class SubwayMapState { 
  2.     private float left; 
  3.     private float top; 
  4.     private float right; 
  5.     private float bottom; 

然后获取ImageView的matrix,根据matrix的getValues获得3x3矩阵。

   
   
   
   
  1. Matrix matrix = mImageViewMap.getImageMatrix(); 
  2. Rect rect = mImageViewMap.getDrawable().getBounds(); 
  3. float[] values = new float[9]; 
  4. matrix.getValues(values); 
  5. ImageState mapState = new ImageState(); 
  6. mapState.setLeft(values[2]); 
  7. mapState.setTop(values[5]); 
  8. mapState.setRight(mapState.getLeft() + rect.width() * values[0]); 
  9. mapState.setBottom(mapState.getTop() + rect.height() * values[0]); 

这样,mapState中存放的是mImageViewMap中的图片四个边的值。

通过ImageState可以计算点击ImageView对应图片的像素点!