在Android设计库中的Tickle Invalidation Flag ViewOffsetHelper

时间:2015-11-19 00:33:39

标签: android android-appcompat android-toolbar

这里发生了什么?它看起来很奇怪,改变它导致奇怪的行为,getTranslation X 但setTranslation Y ?这是一个错误吗?这仅适用于未在X轴上转换的视图吗?他们为什么不使用ViewCompat.postInvalidateOnAnimation(view)

https://android.googlesource.com/platform/frameworks/support.git/+/master/design/src/android/support/design/widget/ViewOffsetHelper.java#68

private static void tickleInvalidationFlag(View view) {
    final float x = ViewCompat.getTranslationX(view);
    ViewCompat.setTranslationY(view, x + 1);
    ViewCompat.setTranslationY(view, x);
}

private void updateOffsets() {
    ViewCompat.offsetTopAndBottom(mView, mOffsetTop - (mView.getTop() - mLayoutTop));
    ViewCompat.offsetLeftAndRight(mView, mOffsetLeft - (mView.getLeft() - mLayoutLeft));
    // Manually invalidate the view and parent to make sure we get drawn pre-M
    if (Build.VERSION.SDK_INT < 23) {
        tickleInvalidationFlag(mView);
        final ViewParent vp = mView.getParent();
        if (vp instanceof View) {
            tickleInvalidationFlag((View) vp);
        }
    }
}

0 个答案:

没有答案