Android事件有关函数getHistorySize()是什么含义?
在android中的MotionEvent的getHistorySize()函数是什么含义。文档上:
Returns the number of historical points in this event. These are movements that have occurred between this event and the previous event. This only applies to ACTION_MOVE events -- all other actions will have a size of 0.
不过实在没有理解。请大侠指点。最好尽量详细写。谢谢 --------------------编程问答-------------------- 返回历史点击的点吧! --------------------编程问答-------------------- final int historySize = ev.getHistorySize();
for (int h = 0; h < historySize; h++) {
......
}
程序里面做这样的操作 目的是什么~~能指点下吗? --------------------编程问答-------------------- h是过去点击的动作的计数。因为一个动作其实是由一系列动作合成的,它总有先后顺序吧。这个就是先后顺序的排名。 --------------------编程问答-------------------- 这样说会不会比较更容易理解:
可以通过调用getHistorySize来获得历史的大小值,它可以返回当前事件可用的运动位置的数目。然后你可以通过使用一系列getHistorical*方法,并传递给它位置索引,来获得每一个历史事件的时间、压力、大小和位置,如下面的代码段所示:
java代码:
int historySize = event.getHistorySize();
for (int i = 0; i < historySize; i++) {
long time = event.getHistoricalEventTime(i);
float pressure = event.getHistoricalPressure(i);
float x = event.getHistoricalX(i);
float y = event.getHistoricalY(i);
float size = event.getHistoricalSize(i);
//待实现:使用每一个点
}
复制代码
用来处理运动事件的一般模式是首先处理每一个历史事件,并在其后跟随当前的MotionEvent值,如下面的代码所示:
java代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case (MotionEvent.ACTION_MOVE) {
int historySize = event.getHistorySize();
for (int i = 0; i < historySize; i++) {
float x = event.getHistoricalX(i);
float y = event.getHistoricalY(i);
processMovement(x, y);
}
float x = event.getX();
float y = event.getY();
processMovement(x, y);
return true;
}
}
return super.onTouchEvent(event);
}
private void processMovement(float _x, float _y) {
// 待实现:对移动作出反应
}
补充:移动开发 , Android