平常我開發APP的時候一般是下面三個過程:首先是網絡請求相關API以及其他一些基本類庫的開發,其次是APP的功能性開發,最后是對照效果圖給APP添加樣式。
而這篇博客講的是如何利用PSD文件為Silverlight APP添加樣式。(會Silverlight ,WPF,windows phone ,windows 8 metro開發的都可以參考下 )。
首先,PSD文件就是photoshop文件,設計師在photoshop上設計完效果圖后最后的產生的文件就是PSD文件,而我們平常得到的jpg格式的效果圖只能說是副產品,因為jpg格式文件你只能看到一個APP的大概效果,但是對於app中的其他信息你就得不到了,比如:字體,顏色,字體大小,間距等等。而PSD文件是包含了所有的信息的。這時候設計師除了相關切圖以外還要單獨做一份標注文件,標注出字體,顏色,字體大小,間距等信息,以便開發人員制作樣式。
而這里,我想告訴大家的是,對於我們使用Silverlight技術開發的APP,其實設計師只要提供效果圖的PSD文件就行了,什么切圖啊標注文件啊統統的不要,你要知道沒有什么可以比PSD文件更能描述APP的樣式了。而這里我之所以只針對Silverlight技術相關的APP,因為對於開發Silverlight技術相關的APP的我們有福了,因為我們有Blend,如果你不知道Blend是什么,這個就像設計師不知道photoshop一樣。之所以提到Blend,因為Blend有一項非常強大的功能,而這個功能一般是被我們忽略掉的,就是Blend可以把PSD文件轉換成XAML代碼,看到這里你應該明白我的意思了。我們開發APP的時候,界面就是用XAML開發的。當然這里也不要太高興,雖然能轉換成XAML文件,但是是靜態的,這就類似於網頁的開發,網頁也有靜態網頁和動態網頁之分。
下我先給大家看一個效果圖(注意我用紅線圈出的部分):
對照這張效果圖,如果我們做樣式,按照一般的方法那么首先就要設計師為我們提供切圖(圖中紅色圈出的部分),其次是標注字體,字體顏色,字體大小,每個元素的間距等等。但是如果我們使用blend來打開這個效果圖的PSD文件,我們會發現,圖上紅色圈出的部分根本不需要切圖,因為blend已經自動把這部分轉換成Path了,而且你還會發現,文本信息(包括:字體,顏色,大小)也都已經變成TextBlock了,多么的方便啊,Path部分你可以直接拷貝過來用,文本信息可以直接利用blend提取出樣式。但是間距就不是這么容易看到的,以為blend對於元素的容器默認是使用canvas的,所以元素的間距就不像文本樣式那樣容易讀出,需要我們根據元素的canvas.left或者canvas.top來計算出來。
然后我再說下這樣做的額外好處,拿blend轉換出的Path為例,我們在做按鈕的按下效果的時候要么是改變大小,要么是改變透明度,要么是改變內容顏色,或者這三種都有,比如上面圖中的“喜歡(愛心)”按鈕,當用戶點擊以后“愛心”的邊框要變成紅色的,那么如果使用圖片的方式的話就需要提供兩種圖片,來對應按鈕不同的狀態,但是我們經過blend的轉換,“愛心”已經轉換成Path了,我們可以通過改變path的fill屬性輕松實現這樣的功能。這樣就減少了切圖,也既減少了程序包的體積。
這里有一個注意到地方,Blend不是對所有的項目都可以提供這個轉換功能的,目前我使用發現,如果打開的是windows phone項目是有轉換功能的,所以不管開發什么項目,你用blend新建一個windows phone的項目,然后用blend加載psd文件,轉換成XAML,我們只需要XAML里面的信息就行了,不用關心是什么項目。