ViewPager 一屏幕多页的方法 我刚学了两种 ,个人笔记 不喜勿喷:
方法一:
ViewPager的适配器PagerAdapter自带的一个方法 返回值控制一屏多页效果,默认值是1.0:
实现一屏2页:
public float getPageWidth(int position) {
return (float) 0.5;
}
方法二:
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="130dp"
android:layout_marginRight="130dp"
android:fadingEdge="none"
android:overScrollMode="never"
>
</android.support.v4.view.ViewPager>
重点是控制 margin的距离,并且设置在父控件中设置ClipChildren=“false”来让其显示出来;
动画效果实现:实现PageTransformer
package com.example.testpager3;
import android.support.v4.view.ViewPager.PageTransformer;
import android.view.View;
public abstract class ABaseTransformer implements PageTransformer {
private static final float ROT_MAX = 20.0f;
private float mRot;
/**
* Called each {@link #transformPage(View, float)}.
*
* @param view
* @param position
*/
// protected abstract void onTransform(View view, float position);
@Override
public void transformPage(View view, float position) {
onPreTransform(view, position);
onTransform(view, position);
onPostTransform(view, position);
}
/**
* If the position offset of a fragment is less than negative one or greater than one, returning true will set the
* visibility of the fragment to {@link View#GONE}. Returning false will force the fragment to {@link View#VISIBLE}.
*
* @return
*/
protected boolean hideOffscreenPages() {
return true;
}
/**
* Indicates if the default animations of the view pager should be used.
*
* @return
*/
protected boolean isPagingEnabled() {
return false;
}
/**
* Called each {@link #transformPage(View, float)} before {{@link #onTransform(View, float)} is called.
*
* @param view
* @param position
*/
protected void onPreTransform(View view, float position) {
// TODO Auto-generated method stub
// final float width = view.getWidth();
// final float height = view.getHeight();
// final float rotation = ROT_MOD * position * -1.25f;
//
// view.setPivotX(0);
// view.setPivotY(height*0.5f);
// view.setRotation(rotation);
Log.e("TAG", view + " , " + position + "");
if (position < -1)
{ // [-Infinity,-1)
// This page is way off-screen to the left.
ViewHelper.setRotation(view, 0);
} else if (position <= 1) // a页滑动至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0
{ // [-1,1]
// Modify the default slide transition to shrink the page as well
if (position < 0)
{
mRot = (ROT_MAX * position);
ViewHelper.setPivotX(view, view.getMeasuredWidth() * 1.0f);
ViewHelper.setPivotY(view, view.getMeasuredHeight()*0.6f);
ViewHelper.setRotation(view, mRot);
} else
{
mRot = (ROT_MAX * position);
ViewHelper.setPivotX(view, -view.getMeasuredWidth() * 0);
ViewHelper.setPivotY(view, view.getMeasuredHeight()*0.6f);
ViewHelper.setRotation(view, mRot);
}
// Scale the page down (between MIN_SCALE and 1)
// Fade the page relative to its size.
} else
{ // (1,+Infinity]
// This page is way off-screen to the right.
ViewHelper.setRotation(view, 0);
}
}
/**
* Called each {@link #transformPage(View, float)} call after {@link #onTransform(View, float)} is finished.
*
* @param view
* @param position
*/
protected void onPostTransform(View view, float position) {
}
}
资源下载地址:http://download.youkuaiyun.com/detail/hf1203/8961663