为duilib的MenuDemo增加消息响应,优化代码和显示效果

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

第一部分

我在前一段时间研究了怎么制作duilib的菜单,花了几天时间以MenuDemo为基础做出个duilib的菜单以备自用,近些天在群里经常会碰到群友问如何给MenuDemo增加消息响应,为了避免重复的回答我特意写这篇日志,希望可以帮到需要之人,同时也介绍了如何美化菜单的效果、动态修改自身的状态以及通过增加属性来优化菜单的xml文件编写过程,先截个图展示一下效果。

本菜单的优点如下:

1、可以展现多级菜单

2、可内嵌自定义控件,并且控件可以向主窗体发送消息,如图的红色叹号就是个按钮控件,可以制作酷狗音乐的托盘菜单的播放暂停按钮和进度控制进度条。

3、菜单拥有阴影效果

4、菜单可以自定义前方显示小图标,并且可以控制图标的大小和是否显示

5、菜单可以根据是否拥有子菜单决定是否显示小箭头

6、菜单可以添加分割线

7、每个菜单项都可以实现check菜单的功能,而且check信息会被保存下来以备下次显示

8、优化菜单的xml描述文件,编写方便容易,如果要写一个二级菜单,比如编写图片中的菜单测试4以及他的子菜单,只需如下代码就可以了

9、可以通过键盘的按钮控制菜单的选项

10、每个菜单项的高度宽度是任意调整的

<MenuElement text="菜单测试4" icon="right.png" iconsize="9,9" expland="true" ><MenuElement text="菜单测试5" expland="true" icon="WebSit.png" iconsize="16,16"><MenuElement text="菜单测试6" icon="Virus.png" iconsize="16,16"/><MenuElement text="菜单测试7" /></MenuElement><MenuElement text="菜单测试8" expland="true"><MenuElement text="菜单测试a" /><MenuElement text="菜单测试b" /></MenuElement></MenuElement> 第二部分

菜单介绍完了,先说说我的开发过程的准备阶段。

大家知道duilib库是个非常棒的开源库,,我个人很喜欢他,但是由于现在作者不维护了,导致现在库中存在的bug无人料理,控件也相对不足,而菜单控件是软件开发中常用的,duilib库中虽然给出了MenuDemo,但是没有增加消息响应,导致一些朋友不会使用他,我开始也是这样,所以打算自己给duilib做一个菜单。

我接触到的和duilib有关的菜单的例子有:原带的MenuDemo、Alberl写的简易Menu、ListDemo中的MenuWnd、其他库的已经编写成熟的Menu.

我找了很多Menu的代码,看了看他们的实现方法。我在这里简单的说一下他们的优缺点:

原带的MenuDemo:

优点:1、实现了多级菜单

2、内嵌自定义控件

缺点:1、无消息响应功能

2、菜单的xml描述文件过于繁琐,在其中实现小箭头或者小图标都要靠自己的布局来实现,这点大家可以看他的xml文件。

Alberl写的简易Menu和ListDemo中的MenuWnd:

优点:1、使用简单方便

2、外观效果很好

缺点:1、只是一级菜单,无法满足很多需要多级菜单的场合

2、没有封装为菜单类,无法通过调节属性来控制菜单的效果

接受失败等于回归真实的自我,

为duilib的MenuDemo增加消息响应,优化代码和显示效果

相关文章:

你感兴趣的文章:

标签云: