引导页旋转动画的实现

通过属性动画ninooldandroids进行实现,ViewPager.setPageTransformer实现切换动画类

package com.fengzyz.activity.viewpage;


import java.util.ArrayList;
import java.util.List;


import com.lidroid.xutils.ViewUtils;
import com.fengzyz.test.R;
import com.fengzyz.utils.DepthPageTransformer;
import com.fengzyz.utils.RotateDownPageTransformer;


import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;


public class PageActivity extends Activity{

private ViewPager mpageView;

private int [] mImgId = new int[]{R.drawable.guide_image1,R.drawable.guide_image2,R.drawable.guide_image3,};

private List <ImageView> mImages = new ArrayList<ImageView>();
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view);
        ViewUtils.inject(this);
        
        mpageView = (ViewPager)findViewById(R.id.id_viewPage);
        //为pageView添加动画
        mpageView.setPageTransformer(true, new RotateDownPageTransformer());
        mpageView.setAdapter(new PagerAdapter() {
@Override
        public Object instantiateItem(ViewGroup container,int position){

ImageView imageView = new ImageView(PageActivity.this);
imageView.setImageResource(mImgId[position]);
imageView.setScaleType(ScaleType.CENTER_CROP);
container.addView(imageView);
return imageView;
}
        @Override
        public void destroyItem(ViewGroup container,int position,Object object){
        container.removeView(mImages.get(position));
        }
@Override
public boolean isViewFromObject(View view, Object object) {

return view ==object;
}
@Override
public int getCount() {

return mImgId.length;
}
});
}
}


自定义动画类:

package com.fengzyz.utils;


import com.nineoldandroids.view.ViewHelper;


import android.view.View;
import android.support.v4.view.ViewPager.PageTransformer;


public class RotateDownPageTransformer implements PageTransformer {

    private static final float MAX_ROTATE = 20f;


    private float mRot;
    
    //A页角度变化20~0,B页角度变化0~20
    @Override
public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();


        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
        ViewHelper.setRotation(view, 0);
           // view.setAlpha(0);


        //A页切换到B页  A页的 position0~-1 B页的position-1~0
        } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
        mRot = position * MAX_ROTATE;
           ViewHelper.setPivotX(view, pageWidth/2);  //设置旋转中心
           ViewHelper.setPivotY(view, view.getMeasuredHeight());
           ViewHelper.setRotation(view, mRot);


        } else if (position <= 1) { // (0,1]
            // 20-0
        mRot = position * MAX_ROTATE;
            ViewHelper.setPivotX(view, pageWidth/2);  //设置旋转中心
            ViewHelper.setPivotY(view, view.getMeasuredHeight());
            ViewHelper.setRotation(view, mRot);


        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
        ViewHelper.setRotation(view,0);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值