可滚动的ImageView Android问题(过度滚动)

时间:2011-09-19 23:09:34

标签: android map scroll imageview

我的图像至少是SCROLL,但我不希望它滚动到图像本身。我有一些名为maxLeft,maxRight等的变量,我目前只设置为

    ImageView img = (ImageView)findViewById(R.id.mapimg);
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int maxX = (int)????;
    int maxY = (int)????;

    // set scroll limits
    final int maxLeft = (maxX * -1);
    final int maxRight = maxX;
    final int maxTop = (maxY * -1);
    final int maxBottom = maxY;

我一直在用我能用的东西来代替我放在那里的问号,但我似乎陷入困境,特别是当我尝试使用不同的模拟器时。真的很感激任何帮助!感谢

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您希望扩展ImageView以添加滚动。如果是这种情况,您不希望使用getWindowmanager(),因为它返回整个屏幕的尺寸(包括标题栏)。相反,您希望扩展ImageView并从onMeasure获取视图的尺寸。您可以查看我的答案here,其中我添加了缩放功能并平移到ImageView。

我使用setImageMatrix和postTranslate设置一个等于图像的矩阵并移动它。为了跟踪图像的位置,我使用了以下内容:

float f[] = new float[9];
matrix.getValues(m); //see matrix documentation. inserts matrix values into f.
float x = m[Matrix.MTRANS_X];
float y = m[Matrix.MTRANS_Y];

浮点x和y将跟踪图像的左上角。确保下一个事件是否会导致图像滚出界限,您可以将postTranslate调整为等于图像的边界。我上面链接的答案应该为你提供一个好的起点,如果你也想要缩放功能,那么你很幸运,因为你不需要做任何额外的工作。