Android PhoneWindowManager監聽屏幕右側向左滑動實現返回功能
由于項目沒有設計返回鍵,一旦進入別的應用,就無法回到桌面。只能通過串口輸入input keyevent 4(返回鍵)來返回桌面,為了方便調試,在Framework 中監聽手勢,實現返回功能。
在frameworksbaseservicescorejavacomandroidserverpolicyPhoneWindowManager中有這么一段代碼
mSystemGestures = new SystemGesturesPointerEventListener(context,new SystemGesturesPointerEventListener.Callbacks() { @Override public void onSwipeFromTop() { Log.i('gyx','onSwipeFromTop'); if (mStatusBar != null) { requestTransientBars(mStatusBar); } } @Override public void onSwipeFromBottom() { Log.i('gyx','onSwipeFromBottom'); if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_BOTTOM) { requestTransientBars(mNavigationBar); } } @Override public void onSwipeFromRight() { Log.i('gyx','onSwipeFromRight'); sendKeyCode(4); Log.i('gyx','sendKeyCode 4'); if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_RIGHT) { requestTransientBars(mNavigationBar); } } @Override public void onSwipeFromLeft() { Log.i('gyx','onSwipeFromLeft'); if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_LEFT) { requestTransientBars(mNavigationBar); } } @Override public void onFling(int duration) { if (mPowerManagerInternal != null) { mPowerManagerInternal.powerHint( PowerHint.INTERACTION, duration); } } @Override public void onDebug() { // no-op } @Override public void onDown() { mOrientationListener.onTouchStart(); } @Override public void onUpOrCancel() { mOrientationListener.onTouchEnd(); } @Override public void onMouseHoverAtTop() { mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS); Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS); msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS; mHandler.sendMessageDelayed(msg, 500); } @Override public void onMouseHoverAtBottom() { mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS); Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS); msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION; mHandler.sendMessageDelayed(msg, 500); } @Override public void onMouseLeaveFromEdge() { mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS); }});
代碼中監聽了手勢操作,其中onSwipeFromRight()就是當從屏幕的右側向左滑動時會觸發,只要在這里加入返回的功能即可;
實現返回按鍵的功能代碼如下
private void sendKeyCode(final int keyCode) { new Thread(new Runnable() { @Override public void run() {try { // 創建一個Instrumentation對象 Instrumentation inst = new Instrumentation(); // 調用inst對象的按鍵模擬方法 inst.sendKeyDownUpSync(keyCode);} catch (Exception e) { e.printStackTrace();} } }).start(); }
總結
到此這篇關于Android PhoneWindowManager監聽屏幕右側向左滑動實現返回功能的文章就介紹到這了,更多相關Android PhoneWindowManager監聽屏幕右側向左滑動實現返回功能內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
1. 解決Python中報錯TypeError: must be str, not bytes問題2. Python如何解決secure_filename對中文不支持問題3. Python使用oslo.vmware管理ESXI虛擬機的示例參考4. ASP基礎入門第二篇(ASP基礎知識)5. 不使用XMLHttpRequest對象實現Ajax效果的方法小結6. Python類成員繼承重寫的實現7. 使用python tkinter開發一個爬取B站直播彈幕工具的實現代碼8. Python 用NumPy創建二維數組的案例9. ThinkPHP6使用JWT+中間件實現Token驗證實例詳解10. python安裝sklearn模塊的方法詳解
