导航:
论坛 -> 文档资料
斑竹:liumazi,ruralboy
作者:
2013/10/10 19:44:52
标题:
Android手机从服务器下载图片并显示的示例程序
浏览:5197
加入我的收藏
楼主:
1、概述 从服务器动态下载图片并生成手机程序界面是非常典型的手机程序设计问题,这里给出一个在下今天所作的一个测试程序的代码。 服务端: QuickBurro中间件 网络通信组件:QuickBurro SDK 目标:将应用服务器上的6个图片文件(img1.png--img6.png)下载到手机端,并显示出来 2、设计时界面 由于是示例程序,所以简单地搭建界面如下:
此帖子包含附件: 大小: 123.7K
----------------------------------------------
樵夫的大马甲
作者:
2013/10/10 19:45:35
1楼:
3、看程序源码 unit main; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts, FMX.MultiResBitmap, FMX.Memo, FMX.Objects, FMX.StdCtrls, MBFileTransfer, MBConnection, System.iOUtils, FMX.Edit; type TMainForm = class(TForm) StyleBook1: TStyleBook; Panel1: TPanel; Panel2: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; MBConn: TMBConnection; FTP: TMBFileTransfer; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure FTPDownloadCompleted(Sender: TObject); procedure StartDownload(ImgIndex: integer); procedure FTPDownloadAborted(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); private { Private declarations } public { Public declarations } s_defaultdir: string; Image: TImage; ImageIndex: integer; remotefilename,localfilename: string; end; var MainForm: TMainForm; implementation {$R *.fmx} // // 程序启动时,得到路径... procedure TMainForm.FormCreate(Sender: TObject); begin s_defaultdir:=TPath.GetDocumentsPath+PathDelim; end; // // 一个图片文件下载失败时,继续下载下一个文件... procedure TMainForm.FTPDownloadAborted(Sender: TObject); begin inc(ImageIndex); if ImageIndex<=6 then StartDownload(ImageIndex); end; // // 一个图片文件下载完成、进行显示... procedure TMainForm.FTPDownloadCompleted(Sender: TObject); begin // // 显示... with image.MultiResBitmap.Add do begin bitmap.LoadFromFile(localfilename); Scale:=FWinService.GetWindowScale(Self); end; // // 开始下个图片文件的下载... inc(ImageIndex); if ImageIndex<=6 then StartDownload(ImageIndex); end; // // 退出... procedure TMainForm.SpeedButton2Click(Sender: TObject); begin halt; end; // // 连接QuickBurro服务器... procedure TMainForm.SpeedButton3Click(Sender: TObject); begin if mbconn.connect then begin Speedbutton4.Visible:=true; Speedbutton5.Visible:=true; end else showmessage('连接失败,无法继续测试!'); end; // // 开始下载... procedure TMainForm.SpeedButton4Click(Sender: TObject); begin StartDownload(1); end; // // 清除显示的图片... procedure TMainForm.SpeedButton5Click(Sender: TObject); begin image1.MultiResBitmap.Clear; image2.MultiResBitmap.Clear; image3.MultiResBitmap.Clear; image4.MultiResBitmap.Clear; image5.MultiResBitmap.Clear; image6.MultiResBitmap.Clear; end; // // 开始下载某个图片文件... procedure TMainForm.StartDownload(ImgIndex: integer); begin ImageIndex:=imgIndex; case imgindex of 1: Image:=Image1; 2: Image:=Image2; 3: Image:=Image3; 4: Image:=Image4; 5: Image:=Image5; 6: Image:=Image6; end; remotefilename:='/img'+inttostr(imgindex)+'.png'; localfilename:=s_defaultdir+'img'+inttostr(imgindex)+'.png'; ftp.DownloadFile(remotefilename,localfilename,0); end; end. 4、看运行结果
此帖子包含附件: 大小: 70.3K
----------------------------------------------
樵夫的大马甲
作者:
2013/10/10 19:48:14
2楼:
5、结论 要注意的几点: 1)、QuickBurro的文件传输控件是异步的,所以代码略显复杂 2)、注意图片文件的动态显示方法,即这一段: // // 显示... with image.MultiResBitmap.Add do begin bitmap.LoadFromFile(localfilename); Scale:=FWinService.GetWindowScale(Self); end;
----------------------------------------------
樵夫的大马甲
作者:
2013/10/10 19:57:22
3楼:
ftp下载?
----------------------------------------------
-
作者:
2013/10/10 20:00:26
4楼:
顶一下,用其它的通信方式可以实现吗?
----------------------------------------------
-
作者:
2013/10/10 20:02:00
4楼:
哦,不是标准FTP,而是中间件的文件传输功能。 只是取了个FTP的控件实例名而已
----------------------------------------------
樵夫的大马甲
作者:
2013/10/10 20:02:22
5楼:
其他的通信方式当然可以
----------------------------------------------
樵夫的大马甲
作者:
2013/10/10 20:05:15
6楼:
mark
----------------------------------------------
-
作者:
ingener (ingenersoft)
★☆☆☆☆
-
盒子活跃会员
2013/10/11 8:45:05
7楼:
先行者!赞一个,顶着。
----------------------------------------------
-
作者:
2013/10/11 9:26:40
8楼:
不错,能提供源码瞧瞧吗,界面是用stylebook做的吗
----------------------------------------------
-
作者:
2013/10/11 12:22:55
9楼:
楼上,眼睛不好使啦, 源码分明在,还叫提供源码。。。
----------------------------------------------
樵夫的大马甲
作者:
2013/10/11 12:47:09
10楼:
顶
----------------------------------------------
设计是我生命中的一部分
作者:
2013/10/11 13:22:38
11楼:
砍柴的 谢谢分享 这个困扰你一天的问题
----------------------------------------------
-