代碼應該是比較簡單的,如果下載了源檔案,理解起來會比較容易。而且貼出代碼,顯得太累贅,為此我做了下面這張圖,其實就是對第一節那個簡圖的增加版: 使用 ViewPager 是因為我在官方教程裡看到了這篇文章:Using ViewPager for Screen Slides,裡面還提供了常式下載,再結合,可以瞭解整個過程。 啟動並執行流程按我的理解如下: MainActivity執行,當螢幕初始化顯示時,調用 onCreate() (這裡用回調方式,可以避免對象在記憶體中建立,但未讓螢幕顯示時被執行畫圖處理,可以節約系統開支)onCreate() 中初始化 ViewPager,給出用於頁幀管理的對象 CalendarPagerAdapter;設定初始要顯示的頁碼。ViewPager 針對當前要顯示的頁碼,向 CalendarPagerAdapter 請求包括相鄰的兩個頁的 Fragment,共建立了三個幀對象。如果你用調試去跟蹤,你會發現我在上面所說的現象,雖然是建立了三幀對象,但只有一幀的 onCreateView() 方法被調用,因為其它兩幀還不需要在螢幕上繪製。當某一幀要在螢幕上顯示時,CalendarPagerFrament 類的 onCreateView() 方法被回調,在 onCreateView() 方法裡,CalendarTableCellProvider 類的 getView 方法接著被調用,在迴圈裡反覆調用,直到一整個月所有的儲存格被建立。 關於 Layout 如何被建立: Layout 的 XML 檔案,是在代碼裡被明確式載入的,對於 Activity 類,是在 onCreate() 方法中的語句 setContentView(R.layout.activity_main); 來載入,在其它兩處,則是使用語句inflater.inflate(R.layout.view_calendar_table, container, false); 來載入。 關於視窗樣式: 在 MainActivity 裡有一句 requestWindowFeature(Window.FEATURE_NO_TITLE); 而實際上,可以通過設定 Activity 的主題來實現,選擇一個 NoActionBar 的主題就可以了。可以開啟檔案 AndroidManifest.xml,其中的 AboutActivity 被設定為 Dialog 主題風格,顯示時就不會有標題列。BTW,同時,AboutActivity 也不需要菜單,因此我將 IDE 自動產生的菜單 XML 檔案,以及代碼中的菜單事件處理函數都刪除了。 代碼的講解這般就結束了,如果有疑問,可以評論提交。