在android Tv 上的开发时,常常需要对按键的响应速度做控制,否则容易出现焦点乱跳的情况或者出现来不及加载的情况。
这里给出一种方案:
在Activity或者view的dispatchKeyEvent做了处理。
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getAction() == 0) {
long nowTime = SystemClock.elapsedRealtime();
this.mTimeDelay = nowTime - this.mTimeLast;
this.mTimeLast = nowTime;
if(this.mTimeSpace <= 80L && this.mTimeDelay <= 80L) {
this.mTimeSpace += this.mTimeDelay;
return true;
}
this.mTimeSpace = 0L;
}
return super.dispatchKeyEvent(event);
}
这里的时间间隔是80ms,在两次时间间隔小于80ms时,将按键事件屏蔽,同时长按产生的累加时间间隔要考虑。
还有一种方案是发送延迟handler消息。这个后面再补上
网友评论