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();
}
我对 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();
}