Подтвердить что ты не робот

Какова продолжительность анимации actionbar.show() и hide()

Я хочу сделать анимацию, когда анимационная панель активирована. Тем не менее, я не знаю продолжительность анимации actionbar.

4b9b3361

Ответ 1

К сожалению, встроенное время анимации азартных файлов кажется жестко закодированным в исходном коде Android после версии 4.1 (без атрибутов, нет измерений, нет методов), и он установлен на 250 мс:

Пример реализации метода actionbar.hide() в Android 4.1/4.4:

public void doHide(boolean fromSystem) {
    if (mCurrentShowAnim != null) {
        mCurrentShowAnim.end();
    }

    if (mCurWindowVisibility == View.VISIBLE && (mShowHideAnimationEnabled
            || fromSystem)) {
        mContainerView.setAlpha(1);
        mContainerView.setTransitioning(true);
        AnimatorSet anim = new AnimatorSet();
        float endingY = -mContainerView.getHeight();
        if (fromSystem) {
            int topLeft[] = {0, 0};
            mContainerView.getLocationInWindow(topLeft);
            endingY -= topLeft[1];
        }
        ObjectAnimator a = ObjectAnimator.ofFloat(mContainerView, View.TRANSLATION_Y, endingY);
        a.addUpdateListener(mUpdateListener);
        AnimatorSet.Builder b = anim.play(a);
        if (mContentAnimations && mContentView != null) {
            b.with(ObjectAnimator.ofFloat(mContentView, View.TRANSLATION_Y,
                    0, endingY));
        }
        if (mSplitView != null && mSplitView.getVisibility() == View.VISIBLE) {
            mSplitView.setAlpha(1);
            b.with(ObjectAnimator.ofFloat(mSplitView, View.TRANSLATION_Y,
                    mSplitView.getHeight()));
        }
        anim.setInterpolator(AnimationUtils.loadInterpolator(mContext,
                com.android.internal.R.interpolator.accelerate_cubic));
        anim.setDuration(250);
        anim.addListener(mHideListener);
        mCurrentShowAnim = anim;
        anim.start();
    } else {
        mHideListener.onAnimationEnd(null);

Это также происходит на Lollipop:

public void doHide(boolean fromSystem) {
        if (mCurrentShowAnim != null) {
            mCurrentShowAnim.end();
        }
        if (mCurWindowVisibility == View.VISIBLE && (mShowHideAnimationEnabled
                || fromSystem)) {
            mContainerView.setAlpha(1);
            mContainerView.setTransitioning(true);
            AnimatorSet anim = new AnimatorSet();
            float endingY = -mContainerView.getHeight();
            if (fromSystem) {
                int topLeft[] = {0, 0};
                mContainerView.getLocationInWindow(topLeft);
                endingY -= topLeft[1];
            }
            ObjectAnimator a = ObjectAnimator.ofFloat(mContainerView, View.TRANSLATION_Y, endingY);
            a.addUpdateListener(mUpdateListener);
            AnimatorSet.Builder b = anim.play(a);
            if (mContentAnimations && mContentView != null) {
                b.with(ObjectAnimator.ofFloat(mContentView, View.TRANSLATION_Y,
                        0, endingY));
            }
            if (mSplitView != null && mSplitView.getVisibility() == View.VISIBLE) {
                mSplitView.setAlpha(1);
                b.with(ObjectAnimator.ofFloat(mSplitView, View.TRANSLATION_Y,
                        mSplitView.getHeight()));
            }
            anim.setInterpolator(AnimationUtils.loadInterpolator(mContext,
                    com.android.internal.R.interpolator.accelerate_cubic));
            anim.setDuration(250);
            anim.addListener(mHideListener);
            mCurrentShowAnim = anim;
            anim.start();
        } else {
            mHideListener.onAnimationEnd(null);
        }
    }

До 4.1 (например, 4.0.1) нет никакого значения продолжительности жесткого кодирования (на самом деле этого нет вообще), в любом случае вы могли бы использовать отражение для доступа к Animator продолжительность после первой анимации. Поле для доступа следующее:

private Animator mCurrentShowAnim;

Я знаю, что это не полный ответ, но я думаю, что это может быть полезно в любом случае.

Ответ 2

Как минимум в 4.3, это было 250 мс.

Смотрите источник здесь

Ответ 3

eh @vincentzhou ваш вопрос не очень структурирован, но я думаю, что это может дать вам некоторое руководство о том, как установить время, когда вы хотите, чтобы вы манипулировали своим элементом в JavaScript

    $(document).ready(function(){
      $('#action').show();
      setTimeout(function() { 
       $('#action').fadeOut(); 
     }, 5000);
   });

будет отображаться элемент с id="action" для 5 секунд. надеюсь, что это поможет

Ответ 4

ActionBar.Show - показывает ActionBar, если он пока не отображается. С этим не связана никакая продолжительность. Это делает ActionBar видимым до тех пор, пока не вызывается actionBar.Hide.

Надеюсь, что это разъяснит