Android:检测OnClick,是否有其他元素在上面
Android: Detect OnClick, and whether another element is on top
奇怪,但我想做以下事情:
- 屏幕右下方有一个指尖大小的圆形元素。
- 让一些图像从屏幕左侧进入,在相同的 Y 位置,从左向右移动并最终与上述元素重叠。
- 检测第一个元素何时被触摸,以及图像元素是否与它重叠。
这类似于劲舞革命或吉他英雄的工作方式。他们排成一排,你在合适的时间点击,然后就会发生一些事情。
我知道如何设置onClickListener,但是有谁知道如何实现上面的吗?
干杯,
李.
因此,尽管收到了反对票(最好让我知道原因,这样我以后就可以避免发生任何事情!),我将 post 我最终采用的解决方案我自己出去。希望有一天这会对其他人有所帮助。
注意:我稍微改了一下。我现在有来自屏幕右侧的 ki 爆炸,向左移动,当 Goku 的图像被点击时,代码检查是否有任何 ki 爆炸在 Goku 的 X 位置,正负 100(所以 100px悟空中心的半径)。
// Set the touch listener for the image I want as the target
imgCurrentForm.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// Ki Blast image
ImageView kiBlast1 = (ImageView) findViewById(R.id.kiBlast1);
// Current X positions at any point in time
float xposForm = imgCurrentForm.getX();
float xposKi1 = kiBlast1.getX();
// Handle the screen touch event
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
if (currentPowerLevel >= 1 && currentPowerLevel <= 299999) {
if (Math.abs(xposForm - xposKi1) <= 100) {
// Do whatever needs to be done if true
}
}
break;
}
return true;
}
});
奇怪,但我想做以下事情:
- 屏幕右下方有一个指尖大小的圆形元素。
- 让一些图像从屏幕左侧进入,在相同的 Y 位置,从左向右移动并最终与上述元素重叠。
- 检测第一个元素何时被触摸,以及图像元素是否与它重叠。
这类似于劲舞革命或吉他英雄的工作方式。他们排成一排,你在合适的时间点击,然后就会发生一些事情。
我知道如何设置onClickListener,但是有谁知道如何实现上面的吗?
干杯, 李.
因此,尽管收到了反对票(最好让我知道原因,这样我以后就可以避免发生任何事情!),我将 post 我最终采用的解决方案我自己出去。希望有一天这会对其他人有所帮助。
注意:我稍微改了一下。我现在有来自屏幕右侧的 ki 爆炸,向左移动,当 Goku 的图像被点击时,代码检查是否有任何 ki 爆炸在 Goku 的 X 位置,正负 100(所以 100px悟空中心的半径)。
// Set the touch listener for the image I want as the target
imgCurrentForm.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// Ki Blast image
ImageView kiBlast1 = (ImageView) findViewById(R.id.kiBlast1);
// Current X positions at any point in time
float xposForm = imgCurrentForm.getX();
float xposKi1 = kiBlast1.getX();
// Handle the screen touch event
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
if (currentPowerLevel >= 1 && currentPowerLevel <= 299999) {
if (Math.abs(xposForm - xposKi1) <= 100) {
// Do whatever needs to be done if true
}
}
break;
}
return true;
}
});