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


  整個教程的代碼下載:http://download.csdn.net/detail/qq316293804/6502207

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

進階教程匯總:

duilib進階教程 -- 在MFC中使用duilib (1)

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

一、穩定性:

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

二、功能性:

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

三、易用性:

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

四、學習難度:

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

五、不方便的地方:

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

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

  duilib有以下幾點不便:

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

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

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

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

  3Slider控件的圖片問題,進度條圖片被放大到和整個控件的高度一樣,這時的解決方案是,比如控件高度為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~






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM