android - Scrollable ImageView Android 问题(过度滚动)

标签 android dictionary scroll imageview

我至少让我的图像滚动,但我不希望它滚动超过图像本身。我有名为 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;

我一直在用我能做的来代替我放在那里的问号,但我似乎被卡住了,尤其是当我尝试不同的模拟器时。任何帮助将不胜感激!谢谢

最佳答案

如果我对您的问题的理解正确,您想要扩展 ImageView 以添加滚动。如果是这种情况,您不想使用 getWindowmanager() 因为它会返回整个屏幕(包括标题栏)的尺寸。相反,您想扩展 ImageView 并从 onMeasure 获取 View 的尺寸。你可以看看我的回答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];

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

关于android - Scrollable ImageView Android 问题(过度滚动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7478360/

相关文章:

android - 如何设置随机颜色

python - 根据第三个变量改变散点图中的标记样式

javascript - 从 JSON 数组访问字符串值

javascript - 当人们进入页面时如何自动滚动

android - 接入网络状态(ACCESS_NETWORK_STATE)和WIFI状态(ACCESS_WIFI_STATE)权限有什么区别?

android - zipalign' 不被识别为内部或外部命令

java - map 和列表的不变性

javascript - 在 javascript 或 jquery 中滚动到具有特定 id 的 html 元素

php - 在滚动上加载更多图像(不使用 mysql)

android - 如何允许用户使用 loadConnectedPlayers