可滚动的ImageView Android问题(overscrolling)

问题描述:

我让我的图像至少滚动,但我不想滚动图片本身。我有变量称为maxLeft,maxRight,等我有,我现在正好被设置为可滚动的ImageView Android问题(overscrolling)

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; 

我一直在用我所能取代问号的我放在那里瞎搞,但我似乎卡住了,特别是当我尝试使用不同的模拟器时。任何帮助真的会很感激!谢谢

如果我正确理解你的问题,你想扩展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调整为等于图像的边界。我上面链接的答案应该给你一个开始的好地方,如果你还想要缩放功能,那么你很幸运,因为你不必做任何额外的工作。