ViewPager实现一屏多页 扇形翻页效果

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.csdn.net/detail/hf1203/8961663


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值