【发布时间】:2017-05-09 16:57:02
【问题描述】:
我不确定我是否误解了MotionEvent 的getOrientation() 函数,但是通过阅读documentation,我的理解是它应该返回由接触点和垂直轴。但是,它似乎是在报告屏幕的方向。
在这里,我刚刚为 MainActivity 覆盖了 onTouchEvent。当ActionMove 事件触发时,有一些TextView 会发生变化,它们会显示长轴、短轴的长度以及椭圆的方向。
public boolean onTouchEvent(MotionEvent event) {
int index = event.getActionIndex();
int action = event.getActionMasked();
int pointerId = event.getPointerId(index);
switch (action) {
case MotionEvent.ACTION_MOVE:
orientation.setText(String.valueOf(event.getAxisValue(MotionEvent.AXIS_ORIENTATION)));
touchMajor.setText(String.valueOf(event.getToolMajor(pointerId)));
touchMinor.setText(String.valueOf(event.getToolMinor(pointerId)));
break;
}
return super.onTouchEvent(event);
}
TouchMajor 和 Minor 工作正常,但我的问题是方向不会随接触而改变。相反,当我旋转屏幕以使屏幕方向发生变化时:
- 90 度顺时针 = -PI/2
- 直立 = 0.0
- 90 度逆时针 = PI/2
报告的方向只是这三个中的一个。
所以我的问题是,我怎样才能正确地抓住接触区域的方向?我在 Android 6.0.1 上使用三星 Galaxy S6。
【问题讨论】:
标签: java android touchscreen