热门手机android系统的音乐播放器设计与实现Word文件下载.docx
- 文档编号:22005458
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:11
- 大小:219.62KB
热门手机android系统的音乐播放器设计与实现Word文件下载.docx
《热门手机android系统的音乐播放器设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《热门手机android系统的音乐播放器设计与实现Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
ChangeanyattributesoftheDChere
if(nCtlColor==CTLCOLOR_DLG)
returnm_brBack;
Returnadifferentbrushifthedefaultisnotdesired
returnhbr;
}
为播放器添加不规则个性按钮。
轴线需要在对话框类中定义按钮的ID及按钮变量。
enum{MY_OPEN=1010,MY_PLAY=1011,MY_PAUSE=1012,
MY_STOP=1013,MY_REPEAT=1014,MY_HIDE=1015,
MY_EXIT=1016,MY_MIN=1017,MY_MAX=1018,MY_QUITE=1019;
CMybuttonm-Open,M-Play,m_Pause,m_Stop
m-Repeat,m_Hide,Exit,m_Min,m_Max,m_Quite:
在对话框的初始化框中创建这些按钮对象
BOOLCMusicPlayerDlg:
OnInitDialog()
CDialog:
OnInitDialog();
//Add"
About..."
menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&
0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<
0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->
AppendMenu(MF_SEPARATOR);
AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'
smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
m_bmBack.DeleteObject();
m_brBack.DeleteObject();
m_bmBack.LoadBitmap(IDB_BACK);
m_brBack.CreatePatternBrush(&
m_bmBack);
Addextrainitializationhere
HRGNc;
HRGNr1;
intx,y,i=0;
x=37;
y=115;
COLORREFForeColor,hoverColor,downColor;
ForeColor=RGB(50,50,50);
hoverColor=RGB(120,120,120);
downColor=RGB(180,180,120);
HRGNmin;
min=CreateRectRgn(0,0,20,15);
m_Min.Create("
_"
WS_CHILD|WS_VISIBLE,CPoint(320,7),min,this,MY_MIN,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
m_Max.Create("
||"
WS_CHILD|WS_VISIBLE|WS_DISABLED,CPoint(346,7),min,this,MY_MAX,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
m_Quite.Create("
X"
WS_CHILD|WS_VISIBLE,CPoint(372,7),min,this,MY_QUITE,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
c=CreateRectRgn(8,0,55,31);
r1=CreateEllipticRgn(48,8,15+48,15+8);
CombineRgn(c,c,r1,RGN_OR);
m_Open.Create("
Open"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_OPEN,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
r1=CreateEllipticRgn(0,8,15,15+8);
CombineRgn(c,c,r1,RGN_DIFF);
m_Play.Create("
Play"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_PLAY,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
m_Pause.Create("
Pause"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_PAUSE,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
m_Stop.Create("
Stop"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_STOP,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
m_Repeat.Create("
Repeat"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_REPEAT,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
m_Hide.Create("
Hide"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_HIDE,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
c=CreateRectRgn(8,0,63,31);
m_Exit.Create("
Exit"
WS_CHILD|WS_VISIBLE,CPoint(x+48*(i++),y),c,this,MY_EXIT,1,ForeColor,downColor,hoverColor,GetSysColor(COLOR_BTNFACE));
DeleteObject(c);
DeleteObject(r1);
m_ctlSlider.SetRange(0,1000);
m_voice.SetRange(0,10);
m_voice.SetPos(7);
SetWindowText("
TT-Play"
);
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
绘制播放器界面
由于有些音频文件信息及播放状态需要爱界面上时时更新,所以要重载OnPaint()函数。
voidCMusicPlayerDlg:
OnPaint()
CPaintDCdc(this);
//devicecontextforpainting
if(m_bOpen)
CSizesize;
CDCmemDC,maskDC;
CStringstr;
COLORREFfileColor,timeColor,infoColor;
size=dc.GetTextExtent(m_strMusic);
fileColor=RGB(156,196,94);
timeColor=RGB(255,0,0);
infoColor=RGB(105,121,148);
m_titleRect.left-=1;
if(m_titleRect.left<
-size.cx)
m_titleRect.left=size.cx;
m_changed=0;
Invalidate();
m_titleRect.top=0;
m_titleRect.right=size.cx;
m_titleRect.bottom=size.cy;
memDC.CreateCompatibleDC(&
dc);
maskDC.CreateCompatibleDC(&
CBitmapbkbmp;
bkbmp.CreateCompatibleBitmap(&
dc,size.cx,size.cy);
memDC.SelectObject(&
bkbmp);
maskDC.SelectObject(&
memDC.SetTextColor(RGB(50,250,160));
memDC.DrawText(m_strMusic,&
m_titleRect,DT_BOTTOM);
maskDC.SetTextColor(RGB(0,0,0));
maskDC.DrawText(m_strMusic,&
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(fileColor);
if(m_titleRect.left>
=0)
dc.BitBlt(30+m_titleRect.left,30,size.cx-m_titleRect.left,size.cy,&
maskDC,m_titleRect.left,0,MERGEPAINT);
dc.BitBlt(30+m_titleRect.left,30,size.cx-m_titleRect.left,size.cy,&
memDC,m_titleRect.left,0,SRCAND);
else
dc.BitBlt(30,30,size.cx+m_titleRect.left,size.cy,&
maskDC,0,0,MERGEPAINT);
memDC,0,0,SRCAND);
dc.SetTextColor(infoColor);
if(m_bRepeat)
switch(m_state)
{
case1:
str.Format("
状态:
播放-Repeat"
break;
case2:
暂停-Repeat"
case3:
}
{switch(m_state)
播放-NoRepeat"
暂停-NoRepeat"
停止-NoRepeat"
dc.TextOut(30,48,str);
str.Format("
%s-%s"
m_Author,m_title);
dc.TextOut(30,65,str);
dc.SetTextColor(timeColor);
%02d:
%02d/%02d:
%02d"
int(m_curPos)/360,int(m_curPos)/60,
int(m_curPos)%60,int(m_time)/360,
int(m_time)/60,int(m_time)%60);
dc.TextOut(260,50,str);
监控音乐的播放器进度
为了能都时时更新进度滑块的位置,以及滚轮标题的位置,还需要实现定时器事件在OnPlay()函数中启动了一个定时器。
SetTimer(0,20,NULL);
实现定时器处理函数,更新当前界面显示信息。
OnTimer(UINTnIDEvent)
m_changed++;
m_curPos=m_ActiveMovie.GetCurrentPosition();
m_ctlSlider.SetPos(m_curPos);
CRectrect;
rect.left=30;
rect.top=30;
rect.right=398;
rect.bottom=50;
CRgnrgn1,rgn2;
rgn1.CreateRectRgnIndirect(&
rect);
rgn2.CreateRectRgn(260,50,350,65);
rgn1.CombineRgn(&
rgn1,&
rgn2,RGN_OR);
InvalidateRgn(&
rgn1,2);
if(m_curPos==0&
&
m_bRepeat)
m_ActiveMovie.Run();
elseif(m_curPos==0)
m_state=3;
OnTimer(nIDEvent);
总结
由于对编程语言的不熟悉所以也遇到了一些问题,由于平时积累不够,对于编程不是那么的连贯和详细,实现一个具体的功能请教了很多人,但是没有有真正的弄懂它的使用方法,所以出现很多问题。
通过自己慢慢地实现一个个的功能理解和消化相关的知识,对于解决不了的问题,小组讨论或向老师和同学们求助,最后慢慢成功。
我觉的这次实验非常有意义,是我了解了很多!
4.2解决我觉的这次课设非常有意义,虽然,短短的三周不可能真正的掌握android相关的知识,但是,通过这次课设,让我们接触了社会比较前沿的编程知识,为即将毕业的我们找工作有了一定的帮助,也为以后从事android打下一个小小的基础。
方法
由于android是用java语言编写的,自己学习java还比较可以,语言不是主要的问题,主要的问题就是android那四个组件的使用和理解,对于老师课堂上没有讲清楚的我下来主要是采用网上查找资料和自己到图书馆查阅相关的书籍,对于其一些接口查阅android的相关API接口文档,通过自己慢慢地实现一个个的功能理解和消化相关的知识,对于解决不了的问题,向老师和同学们求助,然后自己在一点点的理解。
我觉的这次实验非常有意义,虽然,短短的三周不可能真正的掌握android相关的知识,但是,通过这次课设,让我们接触了社会比较前沿的编程知识,为即将毕业的我们找工作有了一定的帮助,也为以后从事android打下一个小小的基础。
4.3收获体会
通过这次三周的课程设计,让我更加全面的复习和掌握了java语言,对android编程知识有了基本的认识和了解,基本掌握了android的四大组件的相关知识,虽然自己以前没有接触过android,但是系统的学习过java语言,对语言知识有一定的理解,但是,android中相关组件和接口非常的繁琐和多,所以,对于初学者不可能一下子全部的掌握所有组件以及接口,但是,通过这三周设计播放器和通讯录,让我明白了android平台和知识的基本使用,虽然设计中遇到了很多的问题,但是通过网上查阅和图书馆介于相关的书籍弄懂了自己不会的知识。
自然学习任何语言和新知识,都会有疑问和困难,所以,自己必须通过查阅相关知识自己解决。
所以,我觉的这次课设非常有意义,虽然,短短的三周不可能真正的掌握android相关的知识,但是,通过这次课设,让我们接触了社会比较前沿的编程知识,为即将毕业的我们找工作有了一定的帮助,也为以后从事android打下一个小小的基础。
参考文献
[1]李宁.Android应用开发实战.北京.机械工业出版社.2012
[2]高彩丽.Android应用开发范例精解.北京.清华大学出版社.2012
[3]李宁.Android开发完全讲义.北京.中国水利水电出版社.2012
[4]张元亮.Android开发应用实战详解.北京.中国铁道出版社.2011
[5]本文由转载。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 热门 手机 android 系统 音乐 播放 设计 实现