統一的使用者介面是可以使得應用程式更友好。要做到使用者介面的統一,我們就必須用到風格(style)和主題(theme)。ophone系統提供了很多系統預設的風格和主題,但是很多情況下,這些不能滿足我們的需要。例如我們不可能總是希望背景色是系統規定的,我們也不希望字型大小一成不變。當然我們可以在每個空間裡面進行修改,但是如果放到風格裡面去做,可以更容易的做到使用者介面統一。如果有朋友還不清楚什麼是風格什麼是主題,你可以在andoird的dev guide文件裡面找到詳細的解釋,這篇文章要描述的是開發者怎麼定製自己的風格和主題,以滿足開發者的要求,使得使用者介面更容易實現。
在這篇文章中,我們用乙個簡單的例子來逐步展示如何定製風格。主要用到乙個定製的類textview。我們通過修改設定給testview的風格,讓你一步步的了解如何定製風格的。
(一)簡單定製及應用風格
開發者在查詢ophone的dev guide文件時,可能已經發現文件介紹了一種簡單的風格定製。這種簡單的風格定製,可以滿足很多使用者的需要。比如你僅僅希望修改view的背景顏色,或者字型大小等。你所能修改的所有條目(item)都是系統已經定義過的,開發者可以改變條目的值,來來達到不同的效果。示例一就是這樣乙個簡單定製。在values目錄下建立styles.xml,然後把風格的名字定義為widget.testview。設定背景顏色為白色。
view plaincopy to clipboardprint?
示例一示例一展示了如何定製風格,要把定製的風格應用到示例中的testview,還需要在layout/testtheme.xml檔案使用testview時,指定這個風格。做完這個步驟,然後執行示例程式就可以看到白色背景效果。示例二中,
你可以看到語句style=」@style/widget.testview」,就是起這個作用的。
view plaincopy to clipboardprint?
示例二(二)定製風格條目
如果開發者想要進一步開發,他可能發現僅僅繼承並修改系統定義好的條目不能滿足他的需要。比如開發者想讓定製的testview上可以顯示乙個帶顏色的圓圈,顯然系統定義的條目沒有關於圓圈的資訊。那怎麼來實現?用前面介紹的簡單定製就不能滿足開發者的需要了。
簡單起見,這裡我們假設testview需要了解到圓圈的顏色和半徑就可以繪製乙個圓圈。可能有人會異議說,我們在testview的**裡面直接寫上不就可以了嘛,實現起來是沒有問題。但是一旦使用者修改就必須得修改**,就有可能出錯。如果我們把這些資訊可以放到自己定製的風格裡面,就簡單多了。如果使用者想修改顏色或者大小,只需要修改定義風格xml檔案的資訊,不需要修改**。
好了,決定要新增圓圈資訊了,首先在styles.xml裡面,新增circlecolor和circleradius兩個條目,並設定他們相應的值,示例三展示了如何新增這兩個條目。是不是這樣就萬事大吉了那?如果你現在去編譯,肯定會得到這兩個條目不存在的錯誤資訊。為什麼呢?我們想一下,系統沒有定義這兩個條目,我們僅僅使用了這兩個條目,也沒有定義它們,當然不知道兩個條目是什麼東西了。
如果要讓系統知道有這兩個條目,我們首先要定義它們。在values目錄下建立乙個attrs.xml檔案。然後新增圓圈的半徑和顏色。
在attrs.xml裡面可以定義很多態別的條目(item),例如integer, float, color, reference, string等。在這裡只定義了兩種乙個是用color來定義顏色,一種是用float來定義半徑。這些型別資訊告訴ophone的資源(resource)系統如何去解讀這些字段,
具體參看示例四。
view plaincopy to clipboardprint?
示例三view plaincopy to clipboardprint?
示例四在attrs.xml裡面定義完成了,在styles.xml也新增了,現在你去編譯應該不會有什麼錯誤了。問題是,怎麼讓testview知道這些資訊。這兩個條目是我們自己定義的,所以我們也得自己去新增一些**讓testview了解到這些資訊。以下的示例五,展示了怎麼從資源總找到我們新增進去的兩個條目的值。
view plaincopy to clipboardprint?
public testview(context context, attributeset attrs, int defstyle) }}
示例五testview獲取到圓圈的顏色和半徑資訊後,就可以用這些資訊去畫開發者想要的圓圈了。關於如何畫這個帶顏色的圓圈,不是我們這裡要描述的內容,請參看附件**。
(三)設定預設風格
在第一部份講到,如果開發者想要應用你所定製的風格給你定製的testview,開發者用style=」@style/widget.testview」這種方式。如果開發者在他的應用裡就用了一次testview,我想這也沒什麼大不了的。但是如果開發者用到testview的地方很多,這種方式就有點麻煩了,萬一有時候還要修改這個風格,那就更糟糕了。下面是乙個簡單的方法,就是把你所定製的風格放到乙個你自己定製的主題中去。關於建立乙個主題,在ophone的文件裡面已經有了。細心的讀者可能發現在示例四中,除了圓圈資訊還有另外乙個條目(testviewstyle),它的作用就是用在這裡。在開發這定製的主題中,把這個條目的值設定為我們定製的風格(示例六),還記得風格的名字叫:widget.testview 吧?現在我們所定製的風格就是對這個testview的預設風格了。
view plaincopy to clipboardprint?
示例六然後就是應用所定製的主題到設計的應用,簡單的一點的方式就是在androidmanifest.xml中新增語句 android:theme=」@style/theme.oms」>。現在你就可以看到你所定製的風格的效果了。趕緊去編譯執行一下。
本文首先描述了如何簡單的定製風格,這種簡單定製可以滿足一部分要求,但是不能深度定製。如果要深度定製,就必須要開發者自己定義條目,並解析條目。最後介紹如何使使用者定製的風格成為某個view的預設風格。
java swing 介面風格
uimanager.put tree.font fontsource uimanager.put list.font fontsource uimanager.put menubar.font fontsource uimanager.put menu.font fontsource uimanag...
軟體介面風格(摘錄)
目前流行的介面風格有三種方式 多窗體 單窗體以及資源管理器風格,無論那種風格,以下規則是應該被重視的。1 易用性 按鈕名稱應該易懂,用詞準確,屏棄模楞兩可的字眼,要與同一介面上的其他按鈕易於區分,能望文知意最好。理想的情況是使用者不用查閱幫助就能知道該介面的功能並進行相關的正確操作。易用性細則 1 ...
如何修改MFC介面風格
本文 在將乙個vc6.0的工程用vs2010開啟的時候,發現執行的時候介面風格是windows2000的風格,於是做以下修改就變成系統預設的風格了 在stdafx.h標頭檔案中,新增或修改如下指令 cpp view plain copy ifdef unicode if defined m ix86...