咕咕怪由于昨天有重要的事情所以咕了一天的文章
(感觉写得挺基础的,对各个部分有一定了解的童鞋可以直接跳过了解的部分
用Matlab做一个app有几种办法呢?
同样的,帮助文档告诉了我们答案:三种。
(我个人在这个项目中主要使用GUIDE
一、Programmatic Workflow
从简单的说起吧,第一种,简单来说就是用代码直接实现。
也就是说,你需要像个老父亲一样事无巨细地一样样构建:
“从底端的figure、panel到上端的uicontrol、axes,一幅横贯GUI的铁幕已经降落下来。“
不论是运行的程序窗口有多大、出现在屏幕哪个角落这类和用户体验挂钩的属性;
还是控件显示的字体是什么、字号有多大这类细碎的事物;
或是设置物体间的”亲子关系”(Parent/Child);
但凡用得到的,都需要一一设置。
举个具体例子吧,你可以新建脚本,然后把这段代码复制到你的matllab里然后运行并体验一下每行代码各个属性的含义:
function[]
这种方法有什么好处呢?
个人认为,这样的好处大概在于没有中间商赚差价,控件要用的属性和设置都一目了然;而且具有很强的可复制性,想要做同样的一个按钮只需要Ctrl+C & Ctrl+V 就完事了。
缺点也很清楚。。。控件一多摆起来写起来实在是一项大工程。
二、GUIDE
这是我这次使用的一个重要工具。打开方式很简单,在命令行窗口中输入guide并按回车,稍候片刻就会弹出这样一个窗口:
由于下面三种与我们要做的GUI实在相差太多,我们选择第一个,建立空白GUI。
进入后左手边就是我们可爱的各种控件了
我们这次主要用到的控件和实现的功能有:
- 静态文本(Static Text),用于显示歌曲名称和播放时长
- 滑动条(Slider),用于调整播放进度及音量大小
- 可编辑文本(Edit Text)(这个项目可用也可不用)
- 按钮(Push Button),用于上一首、下一首的交互功能
- 可切换按钮(Toggle Button),播放/暂停切换功能
- 单选按钮(Radio Button),用于调整panel是否可视
- 面板(panel),美观就完事了
- 坐标轴(axes),可以用来显示声音的波形
- 列表框(Listbox),可以用来做播放列表
(当然摆完后各个控件上是不会有字符的,像“添加”、“删除”、“下一首”这些字符都是我们要现在加的
在你把各种控件放置在了你所想象的位置后,就可以添加这些字符来改进这个小程序给用户的“第一印象”了:
双击我们要调整的控件,弹出了一大堆属性:(这里以按钮“下一首”为例)
由于这篇教程篇幅有限,就着重介绍几个与本项目相关的属性:
CData:如果你有合适切题的图标,就可以赋给CData,不然你只能像下面一样偷懒了↓
String:一般都是显示在这个控件上的文字(当然slider滑动条这类的除外,我就直接用这个写了个“下一首”。。。
Callback:就是传说中的回调,这将是交互的关键!!!在下一篇中详细讲
Style:表示“这是什么控件”,这个控件是pushbutton
Tag:这个控件调用或者写回调的时候你该怎么称呼它,例如,如果你将Tag改成WoHaoShuai:
tmpstr = get(handles.WoHaoShuai,'String');
%tmpstr会是'下一首'
%你可以给每个控件都起个与众不同的名字
%类似这样的get、set在控件交互中将会很多
当你觉得你摆放完备且整齐后,就可以点击保存了
之后,你会得到.fig文件*1、.m文件*1
下一步就是编写.m文件了!
欲知后事如何,且听下回分解(雾
对了,还有:
三、App Designer
App Designer是在matlab2016a之后加入的新功能,在2018a后又加入了一些新功能(然而我用的是2017
打开方式和上一个比较像,在命令行中输入“appdesigner”就行了。
(根据我的使用感觉,最大的优点大概就是控件要美观太多了!!!!缺点大概就是这个平台不像GUIDE那样成熟,功能暂时没有那么齐全,不过我非常看好这种方法在以后的使用,甚至有想更新到2018用这个重新做一个播放器的想法
关于它和GUIDE的区别,请看:(纯英文预警,但讲得真的很透彻清楚
The State of App Building in MATLABblogs.mathworks.com另外,写给强迫症:
你是否遇到控件对不齐又无可奈何强迫症爆发的情况?
其实GUIDE自带对齐功能,以封面那个图为例,位置是上面那一排中图标像汉字“串”一样的那个,在里面你可以花式对齐各种控件,具体操作方法就不赘述了
参考:
Ways to Build Appswww.mathworks.com还有前几排那个文章,如果不想看英语,这里还有我找到的有好心人做了翻译工作的:
【小知识】MATLAB的App Designer与GUIDEblog.csdn.net由于这几天事情比较多,如果出现了错别字和表达错误不规范请通知我,我会修改的(迫真
祝大札开学快乐!XD