天天看點

Android自定義TabActivity(實作仿新浪微網誌底部菜單更新UI)

  如今android上很多應用都采用底部菜單控制更新的ui這種架構,例如新浪微網誌

Android自定義TabActivity(實作仿新浪微網誌底部菜單更新UI)

  點選底部菜單的選項可以更新界面。底部菜單可以使用tabhost來實作,不過用過tabhost的人都知道自定義tabhost究竟是有多麻煩的,原生tabhost的風格是不依附螢幕的底部的,要依附底部就要重寫布局。

  tabhost設定的container可以管理ui的顯示,ui可以用layoutinflater動态生成,也可以是activity,但不好管理activity的生命周期。然後用tabhost控制顯示ui的顯示。

  下面使用的一種方法是自定義菜單布局+activitygroup+多個activity的方式實作,下面是demo的截圖:

Android自定義TabActivity(實作仿新浪微網誌底部菜單更新UI)
Android自定義TabActivity(實作仿新浪微網誌底部菜單更新UI)

  activitygroup

  activitygroup,顧名思義就是activity組,可以管理多個activity的啟動和銷毀。activitygroup是繼承activity的,但是這個方法目前已經被棄用了,雖然不推薦使用,不過還是可以用的。以後會講推薦的做法。我們會用這個類管理界面的實作。activitygroup中有一個重要的方法是getlocalactivitymanager,這個方法可以銷毀和啟動新的activity,并可以通過getdecorview方法擷取到啟動activity的根視圖顯示出來。activity顯示在activitygroup中的一個container中,而container是顯示activity的一個區域,這個container必須是viewgroup或者是其子類。

  首先編寫一個tabactivity  

  編寫一個繼承tabactivity的mainactivity管理界面,界面是三個activity

  編寫activity_main.xml,該布局有底部菜單的實作,是通過linearlayout的layout_weight配合修改背景的button實作的

  然後編寫三個activity,這三個activity可以自定義。代碼比較多,就不全貼出來了。

  啟動demo之後,可以看到activity的生命周期管理是沒有問題的

Android自定義TabActivity(實作仿新浪微網誌底部菜單更新UI)

  demo下載下傳連結: