ImageView 上的 StartAnimation 未在 AlertDialog 中调用

StartAnimation on ImageView not called in AlertDialog

我对 StartAnimation 方法有疑问。当我尝试在 AlertDialog.Builder 中的 ImageView 上启动动画时(布局膨胀),动画正确启动,但在第一个 "frame" 之后它不会继续他的循环。 这是我的代码:

    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" />

如果您使用的是 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();
}