android 切換主題介紹二

來源:互聯網
上載者:User

 

在這篇文章前,我寫過一篇以apk為外掛程式方式切換主題的文章,那麼當你的boss不接受安裝方式該怎麼辦?

下面,我將要介紹另外一種方式,就是把資源檔打包在主程式的方式,該方式的分析具體如下:

簡介:把主工程中,使用不同的style方式,去載入不同的資源檔(也許聽起來很模糊,下面會詳細介紹)

優點:速度快,效率高,不需要額外的安裝包,避免的安裝、下載等繁瑣的問題,不用修改java程式碼,方便,快捷。

缺點:造成資源套件很大,不適合版本控制,每次切換都需要重新OnCreate Activity。

下面,我們來介紹相關的關鍵技術:1.自訂我們的attr 對象: 自訂attr,首先需要在values的檔案夾中建立一個attrs.xml檔案,然後對相關的attr進行配置。這個簡單的介紹一下attr的意思,這個是自訂屬性的意思,主要用於自訂控制項方面,同時我們可以自訂他為皮膚的屬性名稱.

具體建立如下:

        
上面就是我自訂兩個屬性,一個介面背景和一個按鈕背景

 

2.定義style主題定義主題這塊,目前網上很多文章,都寫得很簡潔,對於不熟悉的人來說,真心的看不懂,也不提供demo給初學者實踐,所以這點很容易讓那些意向不堅定的人否決了這種方式,那麼具體的應該是:

 

    
上面我定義了兩個主題: Theme.Default是預設主題 Theme.Ysml 是夜色朦朧的主題。

 

在兩個主題中,有兩個item,分辨是page_bg和btn_bg ,其實這裡的屬性,就是我們在上面定義的attr,這一點,網上的文章沒說清楚,導致了很多初學者不理解或者直接到這裡就提示錯誤。所以,筆者特別的提醒一下大家,希望能解決初學者心中的疑惑。

從page_bg和btn_bg中我都設定了他為我們資源中的兩個圖片,其實這裡可以定義其他的類型,比如:@color @anim 。如果我們需要要做好一個項目,那麼就不能按照我這樣寫了,應該是定義額外的style 來引用,這裡就不做具體說明,思維很重要,只要你懂得去簡化程式,你就能明白。

3.怎麼使用我們的自訂屬性?如下:

在這個layout中,我們的背景中使用了:”?page_bg“,這就是使用圖片資源了。當然,當你的屬性裡面定義的是color,也可以直接調用的,這裡就不多做解釋,舉一反三,多實踐吧同學們。

 

其實這算是一個隱式的參考關聯性,因為我們不知道調用哪個主題的資源來顯示。那麼我們怎麼去告訴程式,我要顯示哪一個主題?4.調用主題?

目前有兩種使用主題的方式 No.1 在AndroidManifest.xml 中配置主題,對一個activity中設定它的:android:theme= 屬性即可,可是,我們是為了動態調用主題方式,所以這種方式,顯然否決了!

No.2 在Activity中設定,方法:在Activity的onCreate方式中調用:setTheme(theme) 方法,特別注意,該方法必須在調用setContentView之前調用。這裡我再額外說兩句,如果我們寫一個BaseActivity的話,在onCreate中調用一下setTheme方法,那麼是不是會簡化我們的代碼?

 

那麼具體,就看看我們啟動並執行效果:1.預設主題:

 

2.夜色朦朧主題:

 

總結:總體來說,該方式應該在很多公司容易接受,但是優缺點我也說了,可能每個人的想法不一致,呵呵,主要的是我們能熟悉懂得技術,需要的時候我們立馬解決問題就ok,對自己的提升也是一個不錯的實踐。如有疑問請聯絡我。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.