gpt4 book ai didi

java - 我怎样才能使我绘制的点可点击?

转载 作者:行者123 更新时间:2023-11-29 22:58:14 26 4
gpt4 key购买 nike

最近我弄清楚了如何使用 Canvas 绘制点和 View ,但我很快反驳了一个问题:

我如何使 mt 绘制点可点击,以便在用户点击它们时显示菜单。

实际上这就是我的观点:

new OnDrawListener() {
@Override
public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
canvas.drawPoint(pageHeight /2, pageHeight /2, paint);
view.draw(canvas) ;
}
}

有人知道我如何让我的点点击可点击,或者我是否可以使用其他可点击的点,这样我就可以用一些 x 将它们放在我的 View 中和 y坐标。

谢谢。

更新:

有人知道解决我的问题的另一种方法吗,因为实际的解决方案不起作用。

      public void onLongPress(MotionEvent e) {
int clickX = (int)(e.getX());
int clickY = (int)(e.getY());

for(int i = 0; i < issueList.size(); i++) {
Issue issue = issueList.get(i);
xPos = view.getWidth() / issue.getxScale();
yPos = view.getHeight() / issue.getyScale();
double xDistance = Math.pow(clickX - xPos, 2);
double yDistance = Math.pow(clickY - yPos, 2);

Log.d("xDistance", Double.toString(xDistance));
Log.d("yDistance", Double.toString(yDistance));

double distance = Math.sqrt(xDistance + yDistance) / view.getZoom();

Log.d("Distance", Double.toString(distance));
if(distance < 50) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
vibrator.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE));
}
Log.d("Taped", "true");
return;
}
}

最佳答案

你需要做三件事:

首先,当您绘制一个点时,始终将其中心的 x 和 y 存储到一个数组中。

其次,在绘制这些点的 View 上设置 OnTouchListener,并从触摸事件中获取 x 和 y,如下所示:

int clickX = (int)event.getX();
int clickY = (int)event.getY();

最后遍历数组并计算点的中心与每个点的触摸事件之间的距离。如果该距离小于您单击该点的点的半径。

distance = Math.sqrt(Math.pow(clickX - centerX, 2) + Math.pow(clickY - centerY, 2));

关于java - 我怎样才能使我绘制的点可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57185656/

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