android animation - كيف لوقف الرسوم المتحركة(إلغاء()لا يعمل)




example library (6)

ولست بحاجة لوقف تشغيل الرسوم المتحركة ترجمة. ليس .cancel() طريقة .cancel() Animation أي تأثير؛ يذهب الرسوم المتحركة حتى النهاية على أي حال.

كيف تقوم بإلغاء رسوم متحركة جارية؟


Answers

استخدم طريقة setAnimation (خالية) لإيقاف رسم متحرك ، يتم عرضه كطريقة عامة في View.java ، وهو الفئة الأساسية لجميع عناصر واجهة المستخدم ، والتي تُستخدم لإنشاء مكونات واجهة مستخدم تفاعلية (الأزرار ، حقول النص ، إلخ). /** * Sets the next animation to play for this view. * If you want the animation to play immediately, use * {@link #startAnimation(android.view.animation.Animation)} instead. * This method provides allows fine-grained * control over the start time and invalidation, but you * must make sure that 1) the animation has a start time set, and * 2) the view's parent (which controls animations on its children) * will be invalidated when the animation is supposed to * start. * * @param animation The next animation, or null. */ public void setAnimation(Animation animation)


ما يمكنك فعله هو الحصول على مصفوفة التحويل من الرسوم المتحركة قبل إيقافها وفحص محتويات Matrix للحصول على قيم الموضع التي تبحث عنها.

هنا يجب أن تبحث عن api

public boolean getTransformation (long currentTime, Transformation outTransformation)

public Matrix getMatrix ()

public void getValues (float[] values)

على سبيل المثال (بعض الشفرات الزائفة. لم أختبر هذا):

Transformation outTransformation = new Transformation();
myAnimation.getTransformation(currentTime, outTransformation);
Matrix transformationMatrix = outTransformation.getMatrix();
float[] matrixValues = new float[9];
transformationMatrix.getValues(matrixValues);
float transX = matrixValues[Matrix.MTRANS_X];
float transY = matrixValues[Matrix.MTRANS_Y];

على Android 4.4.4 ، يبدو أن الطريقة الوحيدة التي أمكنني من خلالها إيقاف تشغيل صورة متحركة View.animate().cancel() ألفا على أحد العروض هي استدعاء View.animate().cancel() (على .cancel() ، استدعاء .cancel() على ViewPropertyAnimator ).

إليك الشفرة التي أستخدمها للتوافق قبل وبعد ICS:

public void stopAnimation(View v) {
    v.clearAnimation();
    if (canCancelAnimation()) {
        v.animate().cancel();
    }
}

... مع الطريقة:

/**
 * Returns true if the API level supports canceling existing animations via the
 * ViewPropertyAnimator, and false if it does not
 * @return true if the API level supports canceling existing animations via the
 * ViewPropertyAnimator, and false if it does not
 */
public static boolean canCancelAnimation() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
}

إليك الصورة المتحركة التي أوقفها:

v.setAlpha(0f);
v.setVisibility(View.VISIBLE);
// Animate the content view to 100% opacity, and clear any animation listener set on the view.
v.animate()
    .alpha(1f)
    .setDuration(animationDuration)
    .setListener(null);

استدعاء clearAnimation() على أي View قمت باستدعاء startAnimation() .


إذا كنت تستخدم وحدة إصغاء الحركة ، v.setAnimationListener(null) . استخدم التعليمة البرمجية التالية مع كافة الخيارات.

v.getAnimation().cancel();
v.clearAnimation();
animation.setAnimationListener(null);

بالنسبة إلى iOS 10 ، استخدم UIViewPropertyAnimator لتحريك. يوفر طرقًا لبدء صور UIView المتحركة وإيقافها وإيقافها مؤقتًا.

 let animator = UIViewPropertyAnimator(duration: 2.0, curve: .easeOut){
        self.view.alpha = 0.0
 }
 // Call this to start animation.
 animator.startAnimation()

 // Call this to stop animation.
 animator.stopAnimation(true)




android animation