转载请说明原出处,谢谢~~

从暑假到现在中秋刚过,我用duilib开发仿酷狗播放器大概经历了50天。做仿酷狗的意图只是看原酷狗的界面比较漂亮,想做个完整一些的工程来练习一下duilib。今天把写好的程序代码综合一下,发布测试版,现在一共写了10355行c++代码和大约2000行xml代码。测试版的程序肯定会有不少bug,而我自己也没有精心去测试程序,希望发现问题的朋友联系我一下,我去修正。程序在win8下运行会有问题,请在兼容性里调整一下!整个软件的开发过程可以看前面发布的博客!

软件界面上绝大多数的控件的功能我都写出来了,几个不重要的控件功能我没有开发!

已有功能的介绍:

1、程序主界面

主界面的效果和原酷狗的是很相似的,右侧的乐库功能只是简单的连接到了网页,没有实际的功能!:

2、换肤功能:

点击标题栏上的换肤按钮可以打开换肤窗体,在这里可以修改窗体的背景图片。修改播放列表的透明度和整个窗体的透明度:

另外可以自己选择背景图片或者使用调色板改变窗体背景色:

3、添加音乐并播放

可以直接拖动音乐文件或者音乐文件夹到播放列表,这时程序会自动添加音乐进去;或者通过下方的音乐添加按钮来选择音乐:

之后可以直接双击音乐列表的项目来播放音乐了,音乐控制按钮和音量控制都是可以使用的。另外原本酷狗的刷新乐库和倒退的按钮,我用来动态增加音乐项目和电台项目:

     

4、Mini窗体

点击标题栏的缩小按钮,可以让窗体进入Mini模式,这样子乐库就被隐藏了:

5、各个菜单

我为仿酷狗做了6个菜单,分别为标题栏菜单,音乐分组菜单,音乐项目菜单,托盘菜单,循环模式选择菜单,音乐电台菜单。很多菜单的响应我并没有去实现,只是做了外观。其中循环模式选择菜单和标题栏菜单的一些选项是可用的:

 
    

 
         

这里的循环选择菜单的功能是有效的,音乐会根据循环模式的不同而有不同的播放模式!

6、设置窗体

打开标题栏菜单,选择“设置”选项,可以打开设置窗体,这个窗体只是样子,没有实际功能:

 
                                                    
           
          

7、左侧功能区

左侧功能区的选项都是可用的,加入了切换动画效果

通过点击刷新按钮可以动态增加音乐电台:

功过点击返回按钮可以动态增加下载列表的项目

8、开启窗体特效

我另外附带了一个音乐盒,增加了窗体开启特效,但是特效并不稳定,只是测试使用的。





未完成功能的介绍:

1、退出程序动画特效

        2、乐库载入动画效果

        3、各个菜单的响应

        4、歌词

        5、桌面歌词

未完成的功能我不打算再去编写了,因为还有很多其他的事情要做,代码开源的话大家可以自己去完成。

关于开源:



群里有很多朋友私密过我,询问关开这个界面是否开源的问题。我这里说明一下:实际上我自己是有开源意向的,这只是用来我练手的程序,开源后或许可以帮到其他刚入门duilib的朋友来学习这个库。但是问题在于我做仿酷狗使用的都是原酷狗的图片素材,而酷狗有声明不可以反向他的软件。所以不确定是否会给我带来麻烦前我不会开源。我在读书,不想惹麻烦~~如果确定开源后没问题的话,我会把源码上传到github.

总结:



写这个界面花了我不少时间,起初只是打算练练手,后来在编写的过程中也学到不少东西,对duilib也有了更好的了解。我个人很喜欢duilib,但是duilib现在出于无人维护的状态下,几乎每个人都有自己维护的一个duilib,我也一样。自己一直在修复这duilib的bug,并且我想在下一个阶段给duilib增加窗体动画特效的功能,另外完善一下uilib库原代的控件动画特效类。这些天看到了老外的juce库,感觉写的很不错,值得学习一下。我想好好研究一下juce库,并把学到的东西再应用到duilib库中将其扩展。就到这里吧!

测试程序下载地址:csdn:点击打开链接

百度云:点击打开链接

我的联系方式:

    Redrain  QQ:491646717

Redrain仿酷狗音乐播放器开发完毕,发布测试程序的更多相关文章

  1. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)

    转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...

  2. 仿酷狗音乐播放器开发日志二十七 用ole为窗体增加文件拖动功能(附源码)

    转载请说明原出处,谢谢~~ 中秋到了,出去玩了几天.今天把仿酷狗程序做了收尾,已经开发完成了,下一篇博客把完结的情况说一下.在这篇博客里说一下使用OLE为窗体增加文件拖拽的功能.使用播放器,我更喜欢直 ...

  3. 仿酷狗音乐播放器开发日志二十四 选项设置窗体的实现(附328行xml布局源码)

    转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出 ...

  4. 仿酷狗音乐播放器开发日志二十五 duilib右键事件的不足的bug修复

    转载请说明原出处,谢谢~~ 虽然仿酷狗的各个菜单早就写好了,但是一直没有附加到程序里.今天把菜单和播放列表控件关联时发现了问题. 和播放列表相关的菜单有三个,分别是每个音乐项目控件相关的菜单.分组的菜 ...

  5. 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)

    转载请说明原出处,谢谢~~ 整个仿酷狗工程的开发将近尾声,现在还差选项设置窗体的部分,显然在设置窗体里用的最多的就是OptionUI控件,我在写好大致的布局后去测试效果,发现Option控件的显示效果 ...

  6. 仿酷狗音乐播放器开发日志二十六 duilib在标题栏弹出菜单的方法

    转载请说明原出处,谢谢~~ 上篇日志说明了怎么让自定义控件响应右键消息.之后我给主窗体的标题栏增加右键响应,观察原酷狗后可以发现,在整个标题栏都是可以响应右键并弹出菜单的.应该的效果如下: 本以为像上 ...

  7. 仿酷狗音乐播放器开发日志十一——CTreeNodeUI的bug修复

    由于做播放列表控件,我的CMusicLength控件继承了CTreeVieWUI控件,在向分组控件中添加播放项目时,发现代码无法正常工作,调用CTreeNodeUI控件的Add方法后无反应,导致我的播 ...

  8. 仿酷狗音乐播放器开发日志三——修复CEditUI的bug2

    无意中发现了CEditUI控件的另一个bug,当我给播放器的搜索栏获取焦点时,这时再改变窗体大小,原本搜索栏应该对应着也改变大小,却发现CEditUI内嵌的edit控件没有跟着改变(如下图),跟着调试 ...

  9. 项目源码--Android类似酷狗音乐播放器

    下载源码 知识技能概要: 1.音乐文件的扫描与管理 2.音频流的解码 3. UI控件的综合使用 4.播放列表方式管理 5.随机播放方式 6.源码带详细的中文注释 ...... 详细介绍 1. 音乐文件 ...

随机推荐

  1. Java注解全面解析

    1.基本语法 注解定义看起来很像接口的定义.事实上,与其他任何接口一样,注解也将会编译成class文件. @Target(ElementType.Method) @Retention(Retentio ...

  2. lintcode 中等题:Max Points on a Line 最多有多少个点在一条直线上

    题目 最多有多少个点在一条直线上 给出二维平面上的n个点,求最多有多少点在同一条直线上. 样例 给出4个点:(1, 2), (3, 6), (0, 0), (1, 3). 一条直线上的点最多有3个. ...

  3. [hackerrank]Even Odd Query

    https://www.hackerrank.com/contests/w5/challenges 简单题,注意整数的0次方是1,奇数. #include <iostream> #incl ...

  4. nslookup工具的使用方法

    配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了.不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常.许多人会简单地使用pi ...

  5. Nim语言:Pascal的语法,Python的缩进

    http://nim-lang.org/ 德国人Andreas Rumpf的作品,原因是他对过去使用的每种语言都不满意(Pascal也不满意?).以前叫Nimrod语言,从0.96版本开始改名为Nim ...

  6. Android:布局单位换算

    一.px 像素,是屏幕上显示数据的最基本的点. 二.dpi dpi(Dots Per Inch):每英寸点数,也可称为像素密度,即屏幕对角线像素值÷英寸值 比如480x800分辨率4.0英寸的手机计算 ...

  7. 40. Combination Sum II

    题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combination ...

  8. C++:String类

    String类 1.使用String类必须在程序的开始包括头文件string,即要有如下语句:#include<string> 2.string类字符串对象的使用方法与其他对象一样stri ...

  9. Hibernate开发之二 映射主键-

    <class name="cn.itcast.e_hbm_id.User" table="user">            <!-- 映射主 ...

  10. POJ 3252 Round Numbers(组合)

    题目链接:http://poj.org/problem?id=3252 题意: 一个数的二进制表示中0的个数大于等于1的个数则称作Round Numbers.求区间[L,R]内的 Round Numb ...