???????????????ViewHelper????????????????????????????????3.0??????????????????????????????????泻????3.0????姹�???????效?????????????????????ViewPager???????????????????卸??
????if (Build.VERSION.SDK_INT >= 11) //Android?姹�?卸?
??????????????????????????姹�????3.0???????????效??????????貌?????校??????????????????????????????写???????????setPageTransformer?????????姹�?卸???????????
public void setPageTransformer(boolean reverseDrawingOrder?? ViewPager.PageTransformer transformer) {
//if (Build.VERSION.SDK_INT >= 11) //Android?姹�?卸?
{
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();
}
}
??????????????????????????????????????
????<com.example.android_viewpager.ViewPagerCompate
????android:id="@+id/viewPager"
????android:layout_width="match_parent"
????android:layout_height="match_parent">
????</com.example.android_viewpager.ViewPagerCompate>
????????MainActivity?????些?????
????mViewPager = (ViewPagerCompate) findViewById(R.id.viewPager);//?????????
??????????????????效????????3.0????姹�???????????????芯??????妾�????????????????效????
public class RotateDownPagetransformer implements ViewPager.PageTransformer {
private static final float MAX_ROTATE = 20F;
private static float ROTATE = 0F;
/*
* 效????????
* ?????????????A>B
* A??position:0.0 >> -1.0
* B??position:1.0 >> 0.0
* (non-Javadoc)
* @see android.support.v4.view.ViewPager.PageTransformer#
* transformPage(android.view.View?? float)
*/
@Override
public void transformPage(View view?? float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity??-1)
ViewHelper.setAlpha(view?? 0);//?????????
} else if (position <= 0) { // A?position:0.0 >> 1.0
//??????????
ROTATE = MAX_ROTATE * position;
//???????????
ViewHelper.setPivotX(view?? pageWidth/2);
ViewHelper.setPivotY(view?? view.getMeasuredHeight());
//?????????
ViewHelper.setRotation(view?? ROTATE);
} else if (position <= 1) { // B?position:1.0 >> 0.0
//??????????
ROTATE = MAX_ROTATE * position;
//???????????
ViewHelper.setPivotX(view?? pageWidth/2);
ViewHelper.setPivotY(view?? view.getMeasuredHeight());
//?????????
ViewHelper.setRotation(view?? ROTATE);
} else { // (1??+Infinity]
ViewHelper.setAlpha(view?? 0);
}
}
}
????????????????????蔚??谢?效???????????ViewPager???谢????????????????????????????????????????????????