Backwards compatible PageTransformer

前端 未结 2 1860
我寻月下人不归
我寻月下人不归 2021-01-01 08:03

I\'m trying to animate items in a ViewPager and the PageTransformer fits the bill. I want it to be backwards compatible to Android 2.2 so am using the support v4 library. Ho

2条回答
  •  旧时难觅i
    2021-01-01 08:32

    As @mark.kedzierski said copied the ViewPager class from here and removed the if statement for the version (check below) and called it TransformableViewPager

    public void setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer) {
        if (Build.VERSION.SDK_INT >= 11) {
            final boolean hasTransformer = transformer != null;
            final boolean needsPopulate = hasTransformer != (mPageTransformer != null);
            mPageTransformer = transformer;
            setChildrenDrawingOrderEnabledCompat(hasTransformer);
            if (hasTransformer) {
                mDrawingOrder = reverseDrawingOrder ? DRAW_ORDER_REVERSE : DRAW_ORDER_FORWARD;
            } else {
                mDrawingOrder = DRAW_ORDER_DEFAULT;
            }
            if (needsPopulate) populate();
        }
    }
    

    I also had to change all PageTransformer to ViewPager.PageTransformer. Then did the transformations in a custom PageTranformer like this,

    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB){
        // > 11 version
        view.setAlpha(0);
    }
    else
    {
        // Nine Old Androids version
        ViewHelper.setAlpha(view, 0);
     }
    

    Ithink proxy can also be used so you don't have to write the version check.This worked even for 2.2

提交回复
热议问题