如何在Navigation Bar上长按recentbutton弹菜单出来
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
想要在Navigation Bar上长按Rencent button后,能弹menu菜单,如何做?
[SOLUTION]
1: 修改BaseStatusBar.java中
protected boolean mRecentButtonHasPerformedLongPress = false; //mtk ADD
修改:
protected View.OntouchListener mRecentsPreloadOnTouchListener = new
View.OnTouchListener() {
// additional optimization when we have software system buttons - start loading the
recent
// tasks on touch down
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_DOWN) {
mRecentButtonHasPerformedLongPress = false;//MTK ADD
preloadRecents();
} else if (action == MotionEvent.ACTION_CANCEL) {
cancelPreloadingRecents();
mRecentButtonHasPerformedLongPress = true;//MTK ADD
} else if (action == MotionEvent.ACTION_UP) {
if (!v.isPressed()) {
cancelPreloadingRecents();
}
}
return false;
}
}
2:修改PhoneStatusBar.java中
//MTK ADD BEGIN
import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.hardware.input.InputManager;
//MTK ADD END
private View.OnCLIckListener mRecentsClickListener = new View.OnClickListener() {
public void onClick(View v) {
awakenDreams();
if(mRecentButtonHasPerformedLongPress== false){ //MTK MODIFY BEGIN
toggleRecentApps();
} //MTK MODIFY END
}
};
在 private void handleLongPressBackRecents(View v) {中修改
try {
……
if (sendBackLongPress) {
KeyButtonView keyButtonView = (KeyButtonView) v;
keyButtonView.sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
keyButtonView.senDACcessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
}
//MTK ADD BEGIN
if (v.getId() == R.id.recent_apps) {
Log.d("yinheng4","handleLongPressBackRecents 4647");
//sendEvent(KeyEvent.KEYCODE_MENU, true);
//sendEvent(action, flags, SystemClock.uptimeMillis());
InputManager.getInstance().injectInputEvent(
new KeyEvent(now, now, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU, 1, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
KeyEvent.FLAG_LONG_PRESS | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
InputDevice.SOURCE_KEYBOARD),
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
InputManager.getInstance().injectInputEvent(
new KeyEvent(now, now, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU, 1, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
KeyEvent.FLAG_LONG_PRESS | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
InputDevice.SOURCE_KEYBOARD),
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
mRecentButtonHasPerformedLongPress = true; //设置为true,方便后面取消onclick事件启动
recent.
}
//MTK ADD END
想要在Navigation Bar上长按Rencent button后,能弹menu菜单,如何做?
[SOLUTION]
1: 修改BaseStatusBar.java中
protected boolean mRecentButtonHasPerformedLongPress = false; //mtk ADD
修改:
protected View.OntouchListener mRecentsPreloadOnTouchListener = new
View.OnTouchListener() {
// additional optimization when we have software system buttons - start loading the
recent
// tasks on touch down
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_DOWN) {
mRecentButtonHasPerformedLongPress = false;//MTK ADD
preloadRecents();
} else if (action == MotionEvent.ACTION_CANCEL) {
cancelPreloadingRecents();
mRecentButtonHasPerformedLongPress = true;//MTK ADD
} else if (action == MotionEvent.ACTION_UP) {
if (!v.isPressed()) {
cancelPreloadingRecents();
}
}
return false;
}
}
2:修改PhoneStatusBar.java中
//MTK ADD BEGIN
import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.hardware.input.InputManager;
//MTK ADD END
private View.OnCLIckListener mRecentsClickListener = new View.OnClickListener() {
public void onClick(View v) {
awakenDreams();
if(mRecentButtonHasPerformedLongPress== false){ //MTK MODIFY BEGIN
toggleRecentApps();
} //MTK MODIFY END
}
};
在 private void handleLongPressBackRecents(View v) {中修改
try {
……
if (sendBackLongPress) {
KeyButtonView keyButtonView = (KeyButtonView) v;
keyButtonView.sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
keyButtonView.senDACcessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
}
//MTK ADD BEGIN
if (v.getId() == R.id.recent_apps) {
Log.d("yinheng4","handleLongPressBackRecents 4647");
//sendEvent(KeyEvent.KEYCODE_MENU, true);
//sendEvent(action, flags, SystemClock.uptimeMillis());
InputManager.getInstance().injectInputEvent(
new KeyEvent(now, now, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU, 1, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
KeyEvent.FLAG_LONG_PRESS | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
InputDevice.SOURCE_KEYBOARD),
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
InputManager.getInstance().injectInputEvent(
new KeyEvent(now, now, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU, 1, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
KeyEvent.FLAG_LONG_PRESS | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
InputDevice.SOURCE_KEYBOARD),
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
mRecentButtonHasPerformedLongPress = true; //设置为true,方便后面取消onclick事件启动
recent.
}
//MTK ADD END
