如何在postscale()后获取imageview中的缩放宽度/高度

时间:2011-06-29 04:48:22

标签: android matrix imageview zoom pinch

我有一个代码,允许用户在屏幕上缩放一些图像。 我使用AbsoluteLayout和imageviews来显示图像。 为了实现这一点,我将这些imageview的宽度/高度设置为其父级。 然后,当用户触摸一个点时,我将检测哪个图像位于该点区域下,并使用bringChildToFront()使其具有onTouch()事件的焦点。 当用户进行捏缩放时,我使用矩阵及其postScale()方法,使用此代码 android imageView: setting drag and pinch zoom parameters

现在,令我困惑的是,如何在postScale()之后获取图像的当前宽度/高度? 我试过了:

  1. getDrawable().getIntrinsicHeight() < - 没有用。它总是回归 原始宽度/高度
  2. getDrawable().getBounds().width() < - 与上述相同
  3. getDrawingCache().getWidth()< - 这只是返回宽度/高度 imageview
  4. 那么,实现这个目标的适当方法是什么? 感谢。

    -ri

1 个答案:

答案 0 :(得分:0)

日 -

这是我使用Pinch缩放/拖动平移的同一问题的解决方案。您可以根据自己的需要进行调整。我把它放在MotionEvent.Action_Move

的缩放部分内
 else if (mode ==ZOOM){
            float newDist = spacing(event);
            if(newDist > 10f){
                int height;
                int width;
                matrix.set(savedMatrix);
                float scale = newDist/oldDist;
                matrix.postScale(scale,scale,mid.x,mid.y);
                setImageMatrix(matrix);
                height = (int)(ivViewPoint.y * scale);
                width = (int)(ivViewPoint.x * scale);
                ivViewPoint = new Point(width,height);


            }

希望有所帮助。