Android 如何放大以发生多点触摸的焦点为中心的GridLayout视图组?
出于学习目的,我正在尝试编写一个Android应用程序,可以加载任何大小的图片(例如8000x8000px)。为此,我必须将图片预处理为较小的片段,并仅将需要显示的片段加载到GridLayout视图组的单元格中 我能够按照说明进行操作并使此视图滚动(即平移)。现在,我试图将缩放添加到这个GridLayout视图中,但它似乎并不那么简单。基本上,视图保持收缩到(0,0),而不是发生多点触摸的焦点。我需要的缩放行为类似于谷歌地图。然而,我的实现并没有真正起作用。它总是缩放到左上角的坐标轴(0,0),因为对于放大/缩小,只更改大小比例 我的代码看起来像Android 如何放大以发生多点触摸的焦点为中心的GridLayout视图组?,android,Android,出于学习目的,我正在尝试编写一个Android应用程序,可以加载任何大小的图片(例如8000x8000px)。为此,我必须将图片预处理为较小的片段,并仅将需要显示的片段加载到GridLayout视图组的单元格中 我能够按照说明进行操作并使此视图滚动(即平移)。现在,我试图将缩放添加到这个GridLayout视图中,但它似乎并不那么简单。基本上,视图保持收缩到(0,0),而不是发生多点触摸的焦点。我需要的缩放行为类似于谷歌地图。然而,我的实现并没有真正起作用。它总是缩放到左上角的坐标轴(0,0),
private final class onScaleListener implements OnScaleListener {
@Override
public void onScale(float scaleFactor, float focusX, float focusY)
{
for (int x = 0; x < GRID_DENSITY; x++)
{
Spec columnSpec = GridLayout.spec(x);
for (int y = 0; y < GRID_DENSITY; y++)
{
Spec rowSpec = GridLayout.spec(y);
LayoutParams l = new LayoutParams(rowSpec, columnSpec);
l.height = (int) (_gridHeight * scaleFactor);
l.width = (int) (_gridWidth * scaleFactor);
_gridLayout.updateViewLayout(_imageViewMatrix[x][y], l);
}
}
}
}
@Override
public boolean onScale(ScaleGestureDetector arg0)
{
_scaleFactor *= _scaleGestureDetector.getScaleFactor();
// Don't let the object get too small or too large.
_scaleFactor = Math.max(0.1f, Math.min(_scaleFactor, 5.0f));
_onScaleListener.onScale(_scaleFactor, _scaleGestureDetector.getFocusX(), _scaleGestureDetector.getFocusY());
return true;
}
onScaleListener上的私有最终类实现onScaleListener{
@凌驾
缩放上的公共无效(浮动缩放因子、浮动焦点X、浮动焦点Y)
{
对于(int x=0;x
谢谢