android 中如何監聽按鍵的長按事件

2021-08-27 07:37:14 字數 1872 閱讀 3141

1,key -- 實體按鍵,

現在手機物理按鍵越來越少

常見的有 keycode_volume_down/up keycode_power keycode_back keycode_home keycode_menu

在乙個activity 過載父類 的下面這三個方法來處理按鍵事件

public boolean onkeydown(int keycode, keyevent event)

public boolean onkeyup(int keycode, keyevent event)

public boolean onkeylongpress(int keycode, keyevent event)

很明顯,長按事件一般是放到 onkeylongpress 函式中來處理的。

那具體是怎麼做的呢,下面請看步驟:

第一步,先在 onkeydown 函式中判斷 event.getrepeatcount 的次數(實際上長按就是由一系列的onkeydown事件觸發的)

return super.onkeydown(keycode, event);

}如果一直按著不放,通過打 log 可以看到

onkeydown event.getrepeatcount() 0

onkeydown event.getrepeatcount() 1

onkeydown event.getrepeatcount() 2

onkeydown event.getrepeatcount() 3

onkeydown event.getrepeatcount() 4

onkeydown event.getrepeatcount() 5

onkeydown event.getrepeatcount() 6

onkeydown event.getrepeatcount() 7

onkeydown event.getrepeatcount() 8

onkeydown event.getrepeatcount() 9

onkeydown event.getrepeatcount() 10

onkeydown event.getrepeatcount() 11

onkeydown event.getrepeatcount() 12

……第二步,過載 onkeylongpressed 函式,在這個函式中你可以新增你的處理

@override

public boolean onkeylongpress(int keycode, keyevent event)

互斥處理的原因是,長按事件處理完後,鬆開按鍵後就會執行 onkeyup 函式。而這兩處針對相同的按鍵想要實現的功能又不一樣

固在此新增乙個 private boolean locklongpresskey = false; 變數,在 onkeylongpress 函式中處理過以後,在 onkeyup中便不再處理。

2, button

自定義的 button 長按事件則是通過實現 onlongclicklistener 介面來做到的。

例項如下:

import android.os.bundle;

import android.view.view;

import android.view.view.onlongclicklistener;

import android.widget.button;

import android.widget.toast;

public class myactivity extends activity implements onlongclicklistener

public boolean onlongclick(view v)

return false; }}

Vue如何監聽鍵盤事件中的按鍵

在我們的專案經常需要監聽一些鍵盤事件來觸發程式的執行,而vue中允許在監聽的時候新增關鍵修飾符 submit 對於一些常用鍵,還提供了按鍵別名 submit 縮寫形式 全部的按鍵別名 enter tab delete 捕獲 刪除 和 退格 鍵 esc space up.down left right...

TabActivity中監聽按鍵響應

在普通的activity中我們可以通過重寫onkeydown int keycode,keyevent event 方法實現對手機按鍵進行監聽,而當要監聽的activity為tabactivity時 其實listactivity也一樣 這個方法並不起作用。如何解決這個問題呢?乙個activity繼承...

TabActivity中監聽按鍵響應

在普通的activity中我們可以通過重寫onkeydown int keycode,keyevent event 方法實現對手機按鍵進行監聽,而當要監聽的activity為tabactivity時 其實listactivity也一樣 這個方法並不起作用。如何解決這個問題呢?乙個activity繼承...