2016-06-08 17 views
0

我在StartAnimation方法中遇到問題。當我試圖在AlertDialog.Builder中的ImageView上啓動動畫(使用佈局膨脹)時,動畫開始正確,但在第一個「幀」之後,它不會繼續他的cicle。 這是我的代碼:ImageView中的StartAnimation未在AlertDialog中調用

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); 

這是我animation.xml

<?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,你將不得不重寫onCreateDialog而不是onCreateView如下:

@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,我需要做什麼?謝謝 – rik194

相關問題