mono touch中下载列表图片到本地,优化显示速度

来源:互联网 发布:什么是php面向对象 编辑:程序博客网 时间:2024/06/01 19:52

部分内容不明可参考:http://blog.csdn.net/joyhen/article/details/17319001

贴一下主要代码:

public override void ViewDidLoad() {    base.ViewDidLoad();    //show loading...    chongqing.LoadingOverlay loadingOverlay = new chongqing.LoadingOverlay(this.View.Bounds);    this.View.AddSubview(loadingOverlay);    //添加表格    TBView = new UITableView(this.View.Bounds);    TBView.BackgroundColor = UIColor.Clear;    TBView.AutoresizingMask = UIViewAutoresizing.All;    //TBView.Style = UITableViewStyle.Grouped;    this.View.Add(TBView);    ListAT = GetItems(); //获取数据    List < string > loadingimglist = new List < string > (); //初始化List对象,存储待下载的图片    foreach(ArticleModel am in ListAT) {        if (!string.IsNullOrWhiteSpace(am.Articleimg)) {            loadingimglist.Add(am.Articleimg);        }    }    if (loadingimglist.Count > 0) DownloadAsync(loadingimglist.ToArray());    else TBView.Source = new TableNewsList(this, ListAT);    //hide loading...    loadingOverlay.Hide();}

/// <summary>/// 下载文件/// </summary>async void DownloadAsync(params string[] imgarr) {    if (imgarr.Length == 0) return;    string _fullname = string.Empty; //图片名    for (int i = 0; i < imgarr.Length; i++) {        _fullname = imgarr[i].Substring(imgarr[i].LastIndexOf("/") + 1);        if (Tools.ArticleListImgLoaded(_fullname)) continue; //已经下载过了就不下载        using(WebClient webClient = new WebClient()) {            byte[] bytes = null;            try {                bytes = await webClient.DownloadDataTaskAsync(new Uri(imgarr[i]));            } catch(TaskCanceledException) {                return;            } catch(Exception e) {                Console.WriteLine(e.ToString());                return;            }            string localPath = KeyCenter.Key_LoadedImgPath + imgarr[i].Substring(imgarr[i].LastIndexOf("/") + 1);            //Save the image using writeAsync            FileStream fs = new FileStream(localPath, FileMode.OpenOrCreate);            await fs.WriteAsync(bytes, 0, bytes.Length);        }    }    TBView.Source = new TableNewsList(this, ListAT);    TBView.ReloadData(); //这一句一定要加上}


原创粉丝点击