歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android輸入分析

依照慣例,在研究Android輸入系統之前給出輸入系統的本質描述:從哲學的觀點來看,輸入系統就是解決從哪裡來又將到哪裡去問題。輸入的本質上的工作就是收集用戶輸入信息並放置到目標位置。

   Android在源代碼分類上,並沒有輸入系統分類。本章的輸入系統研究是一個綜合的分析,前面的GWES的分析,特別是View的Focus Path以及Window Manager Proxy是本章分析的基礎。

Android輸入系統的組成


輸入系統由如下幾部分組成:

  1. 1)後台窗口管理服務
  2. 2)Focus Activity
  3. 3)Focus Window
  4. 4)Focus View:用來接收鍵盤消息

    從輸入系統這個角度去看Android的Window Manager服務解決了用戶信息輸入收集,而FocusActvitiy,Focus Window、Focus View這些概念的設計是為了解決用戶輸入應該放到哪裡去這個問題。在整個Android系統中,同時只有一個一個Focus Window,而屬於該Window的Focus View才是真正的Focus View。

    在Android系統中,在設計上要求多個Actvitiy同時存在運行。在實現中,每次把Actvitiy變成Focused Actvitiy時([email protected])激活程序的時候,就把該Activity的主窗口設置成前景窗口,即系統中的頂層窗口,AppToken概念的引進就是為了解決窗口對象的歸屬問題。在這個過程中,在邏輯上看,我們挑選了一個Activity作為了Focus Activity來接收系統的消息,實質上這個Focus Activity的Focus窗口就是前景窗口。

  Focus窗口的改變將改變焦點View,前景窗口的改變也將引起焦點View的變化。焦點和光標的概念用於管理輸入設備和輸入事件的傳送。光標是一個繪制在屏幕之上的小位圖,指示當前的輸入位置。鍵盤輸入有類似的輸入焦點和鍵盤輸入插入符的概念。只有具有輸入焦點的窗口才能獲取鍵盤事件。改變窗口的焦點通常由特殊的按鍵組合或者TouchEvent事件完成。具有輸入焦點的窗口通常繪制有一個鍵盤插入符。該插入符的存在、形式、位置,以及該插入符的控制完全是由窗口的事件處理例程完成的。

Copyright © Linux教程網 All Rights Reserved