2016-06-08 3 views
0

StartAnimation 메서드에 문제가 있습니다. AlertDialog.Builder의 ImageView에서 애니메이션을 시작하려고 할 때 애니메이션이 올바르게 시작되지만 첫 번째 프레임 이후에는 시클릭이 계속되지 않습니다. 이 내 코드입니다 : 다음과 같이 내 animation.xmlImageView의 StartAnimation이 AlertDialog에서 호출되지 않았습니다.

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="100" 
    android:fromDegrees="-20" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:repeatCount="infinite" 
    android:repeatMode="reverse" 
    android:toDegrees="20" /> 
+0

mainThread에서 실행되고 애니메이션을 잠그는 다른 작업으로 인해 문제가 발생했음을 이해합니다. 이 작업을 다른 스레드에서 실행하면 해결됩니다. – rik194

답변

0

당신이 DialogFragment를 사용하는 경우입니다

LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View layout = inflater.inflate(R.layout.loading_dialog, null); 

    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setView(layout); 


    ImageView img = (ImageView) layout.findViewById(R.id.imgLoadingDialog); 
    Animation shake = AnimationUtils.loadAnimation(context, R.anim.shake_animation); 
    img.startAnimation(shake); 

    return new AlertDialog.Builder(context) 
      .setView(layout); 

, 당신은 onCreateView 대신 onCreateDialog를 재정의해야합니다 :

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     View layout = getActivity().getLayoutInflater().inflate(R.layout.list_item, null); 
     builder.setView(layout); 
     ImageView img = (ImageView) layout.findViewById(R.id.iv); 
     Animation anim = AnimationUtils.loadAnimation(getActivity(), R.anim.shake); 
     img.startAnimation(anim); 
     return builder.create(); 
} 
+0

업데이트 된 게시물 :) – rik194

+0

내 새로운 대답을 확인해보십시오. 그것은 문제없이 나를 위해 작동합니다. –

+0

감사합니다. 그러나 OnPreExecute() 중에 DialogFragment를 AsyncTask에 표시하려면 무엇을해야합니까? Thanks – rik194