在Xamarin中更改ImageView上的图像

时间:2016-09-12 16:10:39

标签: android xamarin imageview xamarin.android

我正在使用Xamarin开发一个多平台应用程序,这是一种相框。我从SDCARD读取文件,我想每2秒显示一次。 由于以下代码我只能显示第一个图像,而不是其余的,我不知道为什么。 我使用ImageView显示每个图像和Timer事件。

<div class="list-group">
<span ng-repeat="list in vm.lists"
   class="list-group-item">
<a class="btn btn-primary pull-right" ng-click="vm.elim(list)">
  <i class="glyphicon glyphicon-trash"></i>
</a>
<a class="btn btn-primary pull-right" ui-sref=
 "lists.view({ listId:list._id })">
  <i class="glyphicon glyphicon-edit"></i>
</a>
  <h4 class="list-group-item-heading" ng-bind="list.name"></h4>
</span>    
</div>

function elim(list) {
  alert("works");
  if ($window.confirm('Are you sure you want to delete?')) {
    vm.list.$remove($state.go('lists.list'));
  }
 }

我不确定使用TimerTask是否会很棒,因为我想要一个多平台应用程序。

1 个答案:

答案 0 :(得分:2)

确保您在UI线程上运行更新。

private void OnTimedEvent(Object source,ElapsedEventArgs e) 
{
    if (actualImage < imagesArray.Count-1)
    {
        actualImage++;
        //imageView = FindViewById<ImageView>(Resource.Id.imageView1);
        RunOnUiThread(() => {
            Bitmap imageBitmap = BitmapFactory.DecodeFile((String)imagesArray[actualImage]);
            imageView.SetImageBitmap(imageBitmap);
        });         
        t.Start();
    }
}

注意:在Android上加载图片总是很痛苦。在几张图像之后,您可能会遇到OutOfMemory异常。如果您不想FFImageLoading,则必须使用UniversalImageLoaderhandle image loading yourself:D