a121984376  

貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI.

如 在WinForm 中 就可以使用Control.Invoke(Action action) 方法来用UI自身更新状态.当然我不是做WinForm的,更新的方法还有很多.

在Andorid的世界里,同样的,想更新UI的状态,必须借助一个第三方势力来更新.

下面是一个简单的动态添加一个ImageView,并从网络上获得图片的简单的例子.

  [Activity(Label = "My Activity")]
    public class SearchActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            this.SetContentView(Resource.Layout.Hostlayout);

            var layout = this.FindViewById<LinearLayout>(Resource.Id.HomeImageContent);

            Handler hander = new Handler();

            List<string> urlSource = new List<string>();

            foreach (var item in urlSource)
            {
                var address = item;
                var taks = System.Threading.Tasks.Task.Factory.StartNew(() =>
                {
                    Runnable run = new Runnable(() =>
                    {
                        Java.Net.URL url = new Java.Net.URL(address);
                        var map = Android.Graphics.BitmapFactory.DecodeStream(url.OpenStream());

                        ImageView image = new ImageView(this);
                        image.SetImageBitmap(map);
                        layout.AddView(image);
                    });
                    hander.Post(run);
                });
            }
        }
    }

 

 

 

 

 

posted on 2014-03-13 10:17  冰之玄岩,小小Programmer  阅读(1564)  评论(0编辑  收藏  举报