一、两处调用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;
}
}