<编辑> 编辑>
/* * *手势探测器回调 */公共布尔>/* * *该类用于支持扔 */公开课FlingSupport { 私人布尔m_bFlinging;/* * <我们现在在一个舞吗? */私人长m_lastComputeTime;/* * <上次我们重新计算*/私人长m_elapsedTime;/* * <时间以来经过最后的计算时间*/私人m_decay浮动; 私人m_xVelocity浮动; 私人m_yVelocity浮动; 私人最终浮INITIAL_DECAY=1; 私人最终浮DECAY_CONSTANT=0.99(浮动); 公共FlingSupport () { } 公共空间startFling (MotionEvent startEvent, MotionEvent moveEvent, velocityX浮动,浮动velocityY) { m_bFlinging=true; m_lastComputeTime=startEvent.getEventTime (); m_decay=INITIAL_DECAY; m_xVelocity=velocityX/1000; m_yVelocity=velocityY/1000; } 公共空间logFling(长timeNowMs) { 日志。我(“ReceiverViewTest”、“FlingSupport:: m_bFlinging:”+ m_bFlinging + " m_elapsedTime:“+ m_elapsedTime + " m_decay:“+ m_decay + " m_xVelocity:“+ m_xVelocity + " m_yVelocity:“+ m_yVelocity); } 公共空间stopFling () { m_bFlinging=false; }/* * *重新计算速度 */公共空间验算() { 如果(m_bFlinging) { 长timeNowMs=SystemClock.uptimeMillis (); m_elapsedTime=timeNowMs - m_lastComputeTime; m_lastComputeTime=timeNowMs; m_decay *=DECAY_CONSTANT; m_xVelocity *=m_decay; m_yVelocity *=m_decay; logFling (timeNowMs); } }/* * *返回多少x像素我们已经自上次移动 * @return */公共浮动getXPixelsSinceLastCompute () { 返回getPixelsSinceLastCompute(真正的); }/* * *返回多少y像素我们已经自上次移动 * @return */公共浮动getYPixelsSinceLastCompute () { 返回getPixelsSinceLastCompute(假); } 私人浮动getPixelsSinceLastCompute(布尔bX) { 浮动像素=0; 如果(this.m_bFlinging) {//距离=速度*时间所以我们看多长时间以来最后一次我们重新计算 像素=m_elapsedTime * (bX ?m_xVelocity: m_yVelocity); } 返回像素; }/* * *返回标志指示是否扔在进步 */布尔bFlingInProgress () { 返回m_bFlinging; } }