android虛擬按鍵的實現

2021-06-28 20:29:40 字數 1437 閱讀 7786

以前看過好幾次的東西又忘記了.或者寫下來就會記住了吧...那就寫下來~~~

systemui

中虛擬按鍵的實現(home, back, recently)

以home鍵為例:

在layout中,定義home鍵為乙個keybuttonview

從布局上看,每個虛擬按鍵是

keybuttonview

。那麼這個

class

是怎麼構造的呢。如下。

publickeybuttonview(context context, attributeset attrs, int defstyle)

建構函式裡頭獲取了一些關鍵的屬性。

接著繼續看這個類怎麼用這些屬性

public boolean ontouchevent(motionevent ev) else 

if(msupportslongpress)

break;

casemotionevent.action_move:

x= (int)ev.getx();

y= (int)ev.gety();

setpressed(x>= -mtouchslop

&&x < getwidth() + mtouchslop

&&y >= -mtouchslop

&&y < getheight() + mtouchslop);

break;

casemotionevent.action_cancel:

setpressed(false);

if(mcode != 0)

if(msupportslongpress)

break;

casemotionevent.action_up:

finalboolean doit = ispressed();

setpressed(false);

if(mcode != 0) else

}else

}if(msupportslongpress)

break;

}returntrue;

}

在這裡的

ontouch

中,keybuttonview

處理了觸控事件,同時並派發了訊息。

void sendevent(int action, int flags) 

void sendevent(int action, int flags, long when)

ontouch

處理後,直接將按鍵上報。

剩下的r.id.home

這個id

用來做什麼呢。單純是為了實現觸控效果。

android 虛擬按鍵是通過哪種機制上報的?

1.在normal mode下,tp button也是和其它觸控事件一樣,以座標形式的input event進行上報。在初始化時會通過tpd button setting 函式根據定義在tpd custom h檔案中的配置資訊將虛擬按鍵的座標資訊寫在 sys board properties vir...

android 虛擬按鍵是通過哪種機制上報的?

1.在normal mode下,tp button也是和其他觸控事件一樣,以座標形式的input event進行上報。在初始化時會通過tpd button setting 函式依據定義在tpd custom 件裡的配置資訊將虛擬按鍵的座標資訊寫在 sys board properties virtu...

android按鍵對映

system usr keylayout qwerty.kl 檔案,修改 搜尋 鍵為鎖屏,也就是相當於電源鍵的黑屏功能,可以修改 key 217 search 改為 key 217 power 當然,你也可以修改為這樣 key 217 power wake dropped 更可以改為這樣 key 2...