gpt4 book ai didi

android - 如何在 Android 中从 4 边更改 View 的大小?

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:46 25 4
gpt4 key购买 nike

是否可以通过在 View 的第 4 侧拉动矩阵来调整大小?我可以将单个点的大小调整为这样的比例。

Resize View

上面的例子工作如下:

protected boolean onTouchDown(@NonNull MotionEvent event) {
oldDistance = (float) Math.sqrt((midPoint.x-event.getX()) * (midPoint.x-event.getX()) + (midPoint.y-event.getY()) * (midPoint.y-event.getY()));
...
}

float newDistance = (float) Math.sqrt((midPoint.x-event.getX()) * (midPoint.x-event.getX()) + (midPoint.y-event.getY()) * (midPoint.y-event.getY()));
moveMatrix.set(downMatrix);
moveMatrix.postScale(newDistance / oldDistance, newDistance / oldDistance, midPoint.x,
midPoint.y);
handlingSticker.setMatrix(moveMatrix);

但是,例如,我怎样才能使右侧扩展的过程像下面的矩阵一样?

first second

最佳答案

您可以尝试以下。这个想法是,如果您只有水平或只有垂直刻度,那么您必须为所需轴提供实际刻度,为另一个轴提供 1。检查比例尺是水平的还是垂直的有点棘手,您可以检查其中之一:

1 第一次触摸是在 View 的“垂直”边界附近。比滚动是水平的(x 轴)。否则它的垂直(y 轴)。

2 如果您有要从屏幕截图中拖动的按钮,这会让事情变得更加简单:您只需要记住秤是用哪些按钮启动的。

protected boolean onTouchDown(@NonNull MotionEvent event) {
oldDistance = (float) Math.sqrt((midPoint.x-event.getX()) * (midPoint.x-event.getX()) + (midPoint.y-event.getY()) * (midPoint.y-event.getY()));
...
}

boolean isHorizonalScale = ... // Check if the drag has been started on the "vertical" side. If no, the scale is vertical.

moveMatrix.set(downMatrix);

if (isHorizonalScale) {
float newDistance = (float) Math.abs(midPoint.x-event.getX());
moveMatrix.postScale(newDistance / oldDistance, 1, midPoint.x, midPoint.y);
} else if (isHorizonalScale) {
float newDistance = (float) Math.abs(midPoint.y-event.getY());
moveMatrix.postScale(1, newDistance / oldDistance, midPoint.x, midPoint.y);
}
handlingSticker.setMatrix(moveMatrix);

关于android - 如何在 Android 中从 4 边更改 View 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53806006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com