我发现了this问题,但这是针对iOS开发的。我在Android上做的事情,所以没有任何帮助。
我在黑色画布上有一个简单的白色矩形,我设置了一个onTouchEvent。我可以按预期移动矩形,但这不是我正在寻找的功能。
我需要知道如何触摸屏幕上的任何地方并移动物体?我不希望对象的X和Y成为我的触摸事件的getX()和getY()。
现在,我有:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.dsl.channel.MessageChannels;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
public class SimplifiedIntegrationTest {
@Test
public void simpleTest() {
MessageChannel inputChannel = MessageChannels.direct().get();
QueueChannel outputChannel = MessageChannels.queue().get();
IntegrationFlows.from(inputChannel).channel(outputChannel).get();
inputChannel.send(MessageBuilder.withPayload("payload").build());
Message<?> outMessage = outputChannel.receive(0);
Assert.notNull(outMessage);
}
}
我的理由是这样的物体可以在没有手指悬停在它上面的情况下看到。这可能吗?
以下是我想要实现的目标:
答案 0 :(得分:1)
为什么不在onTouchEvent回调中获取并存储之前的MotionEvent坐标,然后当onTouchEvent再次触发时(ACTION_DOWN之后的第一个ACTION_MOVE,然后为每个ACTION_MOVE回调再触发)计算出值之间的偏移/差异然后得到你自己的myPoint坐标并将偏移量添加到其当前值。这样,您只能通过位置偏移移动myPoint对象,而不是实际坐标。
此代码未经过测试,我没有使用IDE,但是这样:
private float oldX;
private float oldY;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
oldX = event.getX();
oldY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
float newX = event.getX();
float newY = event.getY();
float offsetX = getOffset(oldX, newX, myPoint.x);
float offsetY = getOffset(oldY, newY, myPoint.y);
myPoint.set((int) offsetX, (int) offsetY);
oldX = newX;
oldY = newY;
break;
}
return true;
}
private float getOffset(float oldVal, float newVal, float current) {
return current + (newVal - oldVal);
}