貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI.
如 在WinForm 中 就可以使用Control.Invoke(Action action) 方法来用UI自身更新状态.当然我不是做WinForm的,更新的方法还有很多.
在Andorid的世界里,同样的,想更新UI的状态,必须借助一个第三方*来更新.
下面是一个简单的动态添加一个ImageView,并从网络上获得图片的简单的例子.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[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);
});
}
}
}
|