ViewPage-图片滑动

//主页面——MainActivity.java

package com.example.testviewpage;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class MainActivity extends Activity {

 private ViewPager mViewPager;
 private int[] mImgIds=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);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.activity_main);
  
  mViewPager=(ViewPager) findViewById(R.id.id_ViewPager);
  /*
   * 就是通过下面一行代码实现动画效果的 几个很有用的类都是直接复制过来的 
   * ☆☆☆☆☆☆☆   千万记得把jar包导过去
   */

//要用那个效果就把哪个注释解开


  //mViewPager.setPageTransformer(true, new DepthPageTransformer());
  mViewPager.setPageTransformer(true, new ZoomOutPageTransformer());
  //mViewPager.setPageTransformer(true, new RotateDownPageTransformer());
  mViewPager.setAdapter(new PagerAdapter() {
   
   @Override
   public Object instantiateItem(ViewGroup container, int position) {
    ImageView imageview=new ImageView(MainActivity.this);
    imageview.setImageResource(mImgIds[position]);
    imageview.setScaleType(ScaleType.CENTER_CROP);
    container.addView(imageview);
    mImages.add(imageview);
    return imageview;
   }
   
   @Override
   public void destroyItem(ViewGroup container, int position, Object object) {

    container.removeView(mImages.get(position));
   }
   
   
   @Override
   public boolean isViewFromObject(View arg0, Object arg1) {
    // TODO Auto-generated method stub
    return arg0==arg1;
   }
   
   @Override
   public int getCount() {
    // TODO Auto-generated method stub
    return mImgIds.length;
   }
  });
 }


}

 

//DepthPageTransformer.java——这是一种方式,从深到浅浮现出来

 

package com.example.testviewpage;

import android.view.View;
import android.annotation.SuppressLint;
import android.support.v4.view.ViewPager;
public class DepthPageTransformer implements ViewPager.PageTransformer {
    private static final float MIN_SCALE = 0.75f; 

    @SuppressLint("NewApi")
 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. 
            view.setAlpha(0); 

        } else if (position <= 0) { // [-1,0] 
            // Use the default slide transition when moving to the left page 
            view.setAlpha(1); 
            view.setTranslationX(0); 
            view.setScaleX(1); 
            view.setScaleY(1); 

        } else if (position <= 1) { // (0,1] 
            // Fade the page out. 
            view.setAlpha(1 - position); 

            // Counteract the default slide transition 
            view.setTranslationX(pageWidth * -position); 

            // Scale the page down (between MIN_SCALE and 1) 
            float scaleFactor = MIN_SCALE 
                    + (1 - MIN_SCALE) * (1 - Math.abs(position)); 
            view.setScaleX(scaleFactor); 
            view.setScaleY(scaleFactor); 

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


 

 

RotateDownPageTransformer.java——第二种页面变换的方式,效果读者运行代码即可出现

 

package com.example.testviewpage; 

import com.nineoldandroids.view.ViewHelper; 

import android.annotation.SuppressLint; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 
import android.view.View; 

public class RotateDownPageTransformer implements ViewPager.PageTransformer 

     
    private static final float ROT_MAX = 20.0f; 
    private float mRot; 
     

     
    public void transformPage(View view, float position) 
    { 

        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() * 0.5f); 
                ViewHelper.setPivotY(view, view.getMeasuredHeight()); 
                ViewHelper.setRotation(view, mRot); 
            } else 
            { 

                mRot = (ROT_MAX * position); 
                ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f); 
                ViewHelper.setPivotY(view, view.getMeasuredHeight()); 
                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); 
        } 
    } 

 

ZoomOutPageTransformer.java——第三中页面滑动方式,效果是按照一定角度偏转,比较炫

 

package com.example.testviewpage; 

import android.annotation.SuppressLint; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 
import android.view.View; 

public class ZoomOutPageTransformer implements ViewPager.PageTransformer 

    private static final float MIN_SCALE = 0.85f; 
    private static final float MIN_ALPHA = 0.5f; 

    @SuppressLint("NewApi") 
    public void transformPage(View view, float position) 
    { 
        int pageWidth = view.getWidth(); 
        int pageHeight = view.getHeight(); 

        Log.e("TAG", view + " , " + position + ""); 

        if (position < -1) 
        { // [-Infinity,-1) 
            // This page is way off-screen to the left. 
            view.setAlpha(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 
            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); 
            float vertMargin = pageHeight * (1 - scaleFactor) / 2; 
            float horzMargin = pageWidth * (1 - scaleFactor) / 2; 
            if (position < 0) 
            { 
                view.setTranslationX(horzMargin - vertMargin / 2); 
            } else 
            { 
                view.setTranslationX(-horzMargin + vertMargin / 2); 
            } 

            // Scale the page down (between MIN_SCALE and 1) 
            view.setScaleX(scaleFactor); 
            view.setScaleY(scaleFactor); 

            // Fade the page relative to its size. 
            view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) 
                    / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); 

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

 

Layout下面的xml页面文件-------非常简单

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v4.view.ViewPager
    android:id="@+id/id_ViewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
   
</android.support.v4.view.ViewPager>

</RelativeLayout>

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值