2013-04-29 2 views
0

저는 활동이 시작될 때 약간의 애니메이션, 특히 다른 이미지 뷰 및 텍스트 뷰와 함께 페이드 인해야 할 웃는 얼굴을 얻으려고합니다. 그러나 onCreate에서이 모든 작업을 수행하면 예상대로 내 응용 프로그램이 멈추는 경우가 있으므로 모든 애니메이션을 AsyncTask로 이동하여 작성시 실행하려고했습니다.Asynctask에서 애니메이션로드하기

public class Animtask extends AsyncTask<Void, Void, Void> { 
protected Void doInBackground(Void... voids) { 
Animation fadein = AnimationUtils.loadAnimation(this, R.anim.fade); 
_view.startAnimation(fadein); 
_view2.startAnimation(fadein); 
_view3.startAnimation(fadein); 
_view4.startAnimation(fadein); 
_view5.startAnimation(fadein); 
guide.startAnimation(fadein); 
blender.startAnimation(fadein); 
} 
} 

이클립스는 다른 모든 것들에 동의하는 것 같지만 loadAnimation이 방법은 인수가 적용되지 않습니다 것을 제안, 문제를 일으키는 : 나는 애니메이션을 호출 할 경우 여기

이다. 내가 끔찍한 잘못한 곳을 한눈에 볼 수 있습니까? 내가 관련성이 있다고 생각한다면 다른 어떤 것도 게시 할 것입니다.

답변

0
Animation fadein = AnimationUtils.loadAnimation(this, R.anim.fade); 

여기 this 키워드는이 AsyncTask을 확장하여 만든 Animtask 클래스를 의미하지만, loadAnimation 방법은 Context 클래스의 객체를 원한다. 가정 활동의 클래스 이름은, 그래서 당신은 아마 UI 스레드를 터치 가정하지 않는 AsyncTask

Animation fadein = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fade); 
그러나

doInBackground 방법에 위의 라인을 변경하여 컴파일 오류를 해결할 수 있습니다, MyActivity입니다 이 AsyncTask를 실행하려고하면이 오류가 발생할 수 있습니다. 정말로 감속이 애니메이션에 의해서만 발생했는지 아니면 애니메이션의 리소스 (이미지)를로드하여 발생했는지는 알 수 있습니까? 해결 방법은 onPostExecute 메서드로 애니메이션 호출을 이동하고 doInBackground 메서드에서 리소스를로드하는 것입니다.

+0

솔직히 문제가 있다면 테스트하는 것이 더 좋습니다. 제대로 작동하는지 확인하겠습니다. – user1398478

+0

그것은 작동하지 않는 것 같아요, 그리고 더 많은 테스트는 전혀 문제가되지 않을 수도 있습니다, textview와 imageview는 앱을 어느 쪽이든 동결 시켰으므로 다른 것들과 다르게 정의 했어야합니다. 문제. – user1398478

관련 문제