android : 如何停止重复放大动画

android : how to stop repeat in zoom in animation

以下是我的zoom_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" >
    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:fromXScale="0"
        android:fromYScale="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1"
        android:toYScale="1" >
    </scale>
</set>

视图放大三倍。我怎么能做到只有一次

PS: android:repeatCount="1" 不工作。

编辑 1:我的动画 Util 加载动画如下

public static Animation loadAnimation(Context context, @AnimRes int id)
        throws NotFoundException {

    XmlResourceParser parser = null;
    try {
        parser = context.getResources().getAnimation(id);
        return createAnimationFromXml(context, parser);
    } catch (XmlPullParserException ex) {
        NotFoundException rnf = new NotFoundException("Can't load animation resource ID #0x" +
                Integer.toHexString(id));
        rnf.initCause(ex);
        throw rnf;
    } catch (IOException ex) {
        NotFoundException rnf = new NotFoundException("Can't load animation resource ID #0x" +
                Integer.toHexString(id));
        rnf.initCause(ex);
        throw rnf;
    } finally {
        if (parser != null) parser.close();
    }

现在我这样称呼它

zoomIn = loadAnimation(getContext(),
            R.anim.zoom_in);
view.startAnimation(zoomIn);

而不是使用 "set" 尝试 "objectAnimator" :

 <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="0"
    android:fromYScale="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1"
    android:toYScale="1"
    android:repeatCount="1" />

将重复计数设置为 0

zoomIn = loadAnimation(getContext(), R.anim.zoom_in);
zoomIn.setRepeatCount(0);

AnimationListener 添加到 zoomIn 如下所示

zoomIn.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        // clear animation here
        view.clearAnimation();
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
});

希望这会有所帮助。