Component类中:
//设置滚动条灵敏度
public void pointerReleased(int x, int y) {
if (dragActivated) {
long currentTime = System.currentTimeMillis();
// replace x and y if this is an x scrolling container
if (!isScrollableY()) {
y = x;
}
if (currentTime != lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]) {
lastTime[pLastDragged] = System.currentTimeMillis();
lastDragged[pLastDragged] = y;
pLastDragged = (++pLastDragged) % lastTime.length;
}
float velocity = (float) (lastDragged[pLastDragged] - lastDragged[(pLastDragged + lastDragged.length + 1) % lastDragged.length]) / (lastTime[pLastDragged] - lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]);
velocity = velocity * -1;
//默认为0.0004f ,越小灵敏度越高
if (isScrollableY()) {
draggedMotion = Motion.createFrictionMotion(scrollY, velocity, 0.0008f);
} else {
draggedMotion = Motion.createFrictionMotion(scrollX, velocity, 0.0008f);
}
draggedMotion.start();
dragActivated = false;
}
}
public void pointerReleased(int x, int y) {
if (dragActivated) {
long currentTime = System.currentTimeMillis();
// replace x and y if this is an x scrolling container
if (!isScrollableY()) {
y = x;
}
if (currentTime != lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]) {
lastTime[pLastDragged] = System.currentTimeMillis();
lastDragged[pLastDragged] = y;
pLastDragged = (++pLastDragged) % lastTime.length;
}
float velocity = (float) (lastDragged[pLastDragged] - lastDragged[(pLastDragged + lastDragged.length + 1) % lastDragged.length]) / (lastTime[pLastDragged] - lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]);
velocity = velocity * -1;
//默认为0.0004f ,越小灵敏度越高
if (isScrollableY()) {
draggedMotion = Motion.createFrictionMotion(scrollY, velocity, 0.0008f);
} else {
draggedMotion = Motion.createFrictionMotion(scrollX, velocity, 0.0008f);
}
draggedMotion.start();
dragActivated = false;
}
}