1. 程式人生 > >duilib進階教程 -- 總結 (17)

duilib進階教程 -- 總結 (17)

  (由於duilib進階教程主要介紹介面,所以這個教程只給出介面相關的程式碼,完整程式碼請進《仿迅雷播放器教程》)

進階教程彙總:

  duilib的學習到此就差不多啦,現在簡短總結下:

一、穩定性:

  目前已發現並解決了四五個bug,不過都屬於一下子就能解決的bug,並且都是功能性方面的bug,並不會導致崩潰,已有很多公司用於產品開發,經過了長期的考驗,因此穩定性方面已經很不錯了。

二、功能性:

  Alberl在做這個播放器的時候,也不敢確定能不能完全實現迅雷那樣的效果,現在看來,完全不是問題!

三、易用性:

  看到Alberl這麼快就做出了迅雷播放器,還用懷疑易用性麼?

四、學習難度:

  Alberl既不是做播放器的,也不是做介面的,只是業餘愛好而已,還能一邊學習一邊寫教程,並且在Alberl寫了這些教程之後,入門已經沒有難點啦,你覺得duilib能有多難學?

五、不方便的地方:

  因為是模仿迅雷播放器,所以這裡和迅雷BOLT做一點點對比。

  圖片資源都是從迅雷提取出來的,

  duilib有以下幾點不便:

  1、Alberl做的最多的工作就是去計算source屬性該填哪些值,因為一個按鈕通常有四種狀態的圖示,而很多按鈕的大小都不一樣,所以這裡對每個按鈕都要計算其source屬性,很不方便。

  這裡有一個簡單的解決方案,加上屬性 splitimage="true"則說明此圖片需要被分成四個部分顯示。規定圖片的四個部分依次按normalimage、hotimage、pushedimage、focusimage排列,程式就自動計算每個圖片的位置,就無需在XML填寫source位置啦~

  而且之後就算按鈕大小變了,或者圖片大小變了,都不需要改動XML。

  2、其次就是圖片預設被拉伸了,很顯然,絕大部分圖片是不需要被拉伸的,有些按鈕的大小和圖片的大小並不一樣,雖然dest屬性可以解決這個問題,但是也很不方便,所以預設不應該被拉伸,並且圖片垂直水平都居中,如果想要拉伸,則指定scaleimage="true"。 這就方便多啦。

  3、Slider控制元件的圖片問題,進度條圖片被放大到和整個控制元件的高度一樣,這時的解決方案是,比如控制元件高度為20,圖片高度為3,則需要把圖片調成高度為20,其他17個高度都做成透明。如果控制元件高度調成40,那麼圖片又要調整。  所以可以加一個屬性imageheight="3",這樣Slider控制元件自動將圖片垂直居中,或者無需指定imageheight屬性,程式碼自動判斷高度。

  4、部分屬性不全,比如編輯框有FocusBordColor,卻沒有HotBordColor,這樣要實現迅雷那樣的編輯框,只能指定一個HotImage屬性,顯然也不方便。還有很多Color屬性都不全,就不一一指出了。

  5、按鈕狀態切換時,只能指定一個圖片,迅雷每個按鈕除了切換hotimage以外,按鈕的下面還有一個藍色的光影,顯然這個光影是可以重用的,說明迅雷的按鈕切換時至少可以切換兩張圖片。並且那個光影可以顯示在按鈕外面,可以看到光影的寬度明顯比按鈕寬,甚至延長到了旁邊的按鈕下面。 這個改動可能涉及到核心,因此不建議去改,改一下圖片就可以了。

  不過以上幾點都是很容易實現的,因此實際專案使用中,可以花幾天時間把以上幾點實現了,後面開發就更方便啦~

  當然,這只是開發迅雷播放器中遇到的問題,開發其他專案可能會遇到其他問題。

  由於Alberl只是業餘人士,就不做這些改進了。

  從實現效果來看,迅雷BOLT顯然更成熟,更全面。但由於迅雷BOLT並不開源,而duilib也已經夠用了,雖然提了這幾點不便,但都是很容易解決的,也就說duilib已經非常方便了。

  可以看到Alberl做的播放器和迅雷看看的相似度達到95%以上,再往細節裡做一下就可以以假亂真啦~O(∩_∩)O~

  Alberl在最開始也說了,選擇從這個庫開始研究,最主要的原因是因為很多大公司都用了它,所以Alberl在不知道哪個庫好用的情況下,就跟著大牛走啦~O(∩_∩)O~

相信在看了Alberl的教程以及作品之後,對duilib應該心中有數了吧。

最後,祝小夥伴們學習愉快~O(∩_∩)O~