2017-04-14 5 views
0

나는 간단한 로그인 활동을하고 있습니다. 버튼과 회전 애니메이션이 있습니다. 버튼을 클릭하면 애니메이션이 실행되고 몇 초가 걸리는 로그인 메소드가 호출됩니다.GUI가 함수 실행이 끝날 때까지 업데이트되지 않습니다.

로그인 기능 실행이 완료되면 (레이아웃이 변경되기 바로 전에) 애니메이션이 시작되는 것이 문제입니다.

private void BtnpPrijava_Click(object sender, EventArgs e) 
     { 
      this.RunOnUiThread(() => { 
      string username = edttxtKorisnicko.Text; 
      string password = edttxtSifra.Text; 

      var rotateAboutCornerAnimation = AnimationUtils.LoadAnimation(this, Resource.Layout.RotationAnimation); 
      imageViewForRotation.Visibility = ViewStates.Visible; 
      imageViewForRotation.StartAnimation(rotateAboutCornerAnimation); 

      success = LogInController.Instance.Login(username, password);  

      if (success) 
      { 
       StartActivity(typeof(MainActivity)); 
      } 
     }} 

가 나는 또한 RunOnUIThread 코드 만이 3 선을 넣어 시도 :

var rotateAboutCornerAnimation = AnimationUtils.LoadAnimation(this, Resource.Layout.RotationAnimation); 
    imageViewForRotation.Visibility = ViewStates.Visible; 
    imageViewForRotation.StartAnimation(rotateAboutCornerAnimation); 

는 아무도 내가 뭘 잘못 날 지점 수

이 내가 시도 무엇인가?

답변

0

해결책은 RunOnUiThread에서 위에서 언급 한 3 줄과 새 스레드의 모든 코드를 넣는 것이 었습니다.

private void BtnpPrijava_Click(object sender, EventArgs e) 
    { 
     new System.Threading.Thread(new System.Threading.ThreadStart(() => 
     { 
      string korisnicko = edttxtKorisnicko.Text; 
      string sifra = edttxtSifra.Text; 

      if (korisnicko != "" && sifra != "") 
      { 
       bool prijavljen = false; 


       var rotateAboutCornerAnimation = AnimationUtils.LoadAnimation(this, Resource.Layout.RotationAnimation); 

       this.RunOnUiThread(() => 
       { 
        ivRotacija.Visibility = ViewStates.Visible; 
        ivRotacija.StartAnimation(rotateAboutCornerAnimation); 
       }); 


       prijavljen = LogInController.Instance.Prijava(korisnicko, sifra); 


       if (prijavljen) 
       { 
        StartActivity(typeof(MainActivity)); 
       } 
       else 
       { 
        ivRotacija.Visibility = ViewStates.Visible; 
       } 
      } 
     })).Start(); 
    } 
관련 문제