2012年12月28日 星期五

說說,FullScreenActivity是android給的新模板。不過重點是PackageManager的操作。


有點驚豔的,為了玩App to SD的實現所以創了新專案,發現原來android套件升級還多了幾個新模板,有設定用的,有登入用的,也有全螢幕的。

於是好奇的小書便拿了其中一個來玩,而因為這個project的性質,所以我拿全螢幕的來玩,也就是傳說中的FullscreenActivity。


而我有實做了一個app,但是其實我是想要做app to SD的,所以一切都怪在自己太愛玩了,本來信誓旦旦說一個晚上就可以把app to SD搞定,但是搞了這個全螢幕很炫麗的activity又弄了一段時間。


那就先來稍微介紹一下這個FullscreenActivity吧,有錯請鞭小力一點:

先,他的畫面很炫,一開始他長這樣的,就是一個textView。
但是當你點一下螢幕的時候,你會發現它會跳出action bar 和一個"假的"Button,
跳出的動作是用動畫來操作的,不過這樣應該會有相容性的問題,於是我們會發現他在動畫產生的設計上有下些功夫,就是做了sdk版本的判斷。
版本的判斷是個大工程呀,像是畫面中下面Button的部分,如果你也創了一個同樣的project,會發現在main activity中,大約在Line 71的地方可以看見有版本來做動畫的產生與否判斷,而他還另外做了一個.util的package,其中包含了一個abstract class SystemUiHider和兩個分別給不同版本用的class extends SystemUiHider,而這個.util的package是幹嘛的呢?適用來處理action bar的,其中也有用到了interface 來實作action bar的開關動畫(mOnVisibilityChangeListener)。

後,架構上我們可以觀察到,他有一個package,裡面有一個抽象類別,兩個繼承它(抽象類別)實作的class,用來處理action bar的hide和show;有兩個Interface,分別負責監聽當action bar與Dummy Button show與hide時的動畫;控制項是main activity(FullscreenActivity),activity裡面必須要實作處理Dummy Button 控制與動畫的interface(這個interface也對action bar做控制),至於另外一個interface在default的package裡面就做掉了。

在控制項中,android很貼心對使用流程做了一些設計,像是handler的postDelayed(),當產生action bar 和Dummy Button時候,會設計有自動消失的動作,以及當點擊了Dummy Button時候,他會延長(操作流程上便是刪除舊的runnable,再下新的postDelayed指令)顯示的畫面,我們也可以由AUTO_HIDE_DELAY_MILLIS來設定延長的時間,以及可以用AUTO_HIDE來設定是否要自動隱藏。

有機會可以來學學這怎麼寫的,整個很炫呀~~~
可是這不是重點,重點是我想試著實驗PackageManager的操作。

這是我做的App,參考來自這裡,和這裡

在這個App中,主要實作了兩件事情:

  1. 能夠產生一個有簡單apk資訊的List,做些簡單過濾;點擊之後會跳轉至資訊的頁面。
  2. 對FullscreenActivity的模板做了小幅的修改,讓他可以在顯示資料之後,不會再有Dummy Button跳出來,action bar也只會跳出來一次。
送上精美套圖:



主要的方法可以參考這裡,和這裡,連結跟剛剛的一樣呵呵。

至於FullscreenActivity的修改,可以參考main Activity裡面Line 257到Line 310的程式碼,主要是複製了一份自動隱藏的方法稍作修改,以及在監聽事件中處理。


話說這份文章還蠻詳細的,就是剛剛參考的第一個連結(出處:http://blog.csdn.net/qinjuning),有機會可以再來試試看怎麼抓取更詳細的訊息。












1 則留言:

  1. 我昨天剛好用上這新的FullscreenActivity,也是煩惱他自動隱藏下隨一點任一畫面就會跳出button,參考你的code讓我有了靈感!

    回覆刪除

你好,我是小書,如果文章內容有錯誤,或是看到有建議以及任何感想時,歡迎提出分享,我們一起學習一起努力。

追蹤者