Android按键音(焦点)

一、两处调用playSoundEffect:

其一:继承ViewGroup类的子类内部View切换;例如ViewPager

frameworks/support/v4/java/android/support/v4/view/ViewPager.java

public boolean dispatchKeyEvent(KeyEvent event) {
  // Let the focused view and/or our descendants get the key first
  return super.dispatchKeyEvent(event) || executeKeyEvent(event);
}

public boolean executeKeyEvent(KeyEvent event) {
  handled = arrowScroll(FOCUS_LEFT);
}
public boolean arrowScroll(int direction) {
  if (handled) {
    playSoundEffect(SoundEffectConstants.getContantForFocusDirection(direction));
  }
}

其二:ViewRootImpl完成两个ViewGroup的切换

frameworks/base/core/java/android/view/ViewRootImpl.java

private int processKeyEvent(QueuedInputEvent q) {
  if (mView.dispatchKeyEvent(event)) {
    Log.d(TAG,"mView.dispatchKeyEvent()== true,return finished");
    return FINISH_HANDLED;
  }
  if (v.requestFocus(direction, mTempRect)) {
    Log.d("ViewRootImpl","TK--------->>>>>requestFcous>>playSoundEffect");//add by tank@tcl.com
    playSoundEffect(SoundEffectConstants.getContantForFocusDirection(direction));
    return FINISH_HANDLED;
  }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值