viewPager 实现左右都漏出item 的例子

我们需要实现viewPager 实现左右都漏出item 的例子,这个可以很方便的扩展,以满足不同的需求,
imageViews可以添加同样的布局,也可以添加不同的布局。以下有两种方式来实现,
1.设置
mPager.setPageMargin(-60);
2.重写
PagerAdapter 的getPageWidth方法

主程序代码:

package com.yongche.demoproject.ui;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.yongche.demoproject.R;

public class SlideActivity extends Activity {
   private static final int NUM_PAGES = 5;
   private ViewPager mPager;
   private MyAdViewPagerAdapter mPagerAdapter;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.slide_activity);
      mPager = (ViewPager) findViewById(R.id.pager);
      ArrayList<ImageView> imageViews= new ArrayList();
      for(int i = 0;i<6;i++){
         ImageView imageView = new ImageView(SlideActivity.this);
         imageView.setPadding(50, 0, 50, 0);
         imageView.setImageResource(R.drawable.slide_01);
         imageViews.add(imageView);
      }
      mPager.setBackgroundResource(R.drawable.link);
      mPagerAdapter = new MyAdViewPagerAdapter(SlideActivity.this,imageViews);
      mPager.setAdapter(mPagerAdapter);
      mPager.setPageMargin(-60);
   }



   public class MyAdViewPagerAdapter extends PagerAdapter {
//    @Override
//    public float getPageWidth(int position) {
//       return 0.9f;
//    }

      private ArrayList<ImageView> pagerList;
      private Context ctx;

      public MyAdViewPagerAdapter(Context ctx, ArrayList<ImageView> pagerList) {
         this.ctx = ctx;
         this.pagerList = pagerList;
      }

      @Override
      public int getCount() {
         return pagerList.size();
      }

      @Override
      public Object instantiateItem(View container, int position) {
         ((ViewPager) container).addView(pagerList.get(position));
         return pagerList.get(position);
      }

      @Override
      public void destroyItem(View container, int position, Object view) {
         ((ViewPager) container).removeView(pagerList.get(position));
      }

      @Override
      public boolean isViewFromObject(View view, Object object) {
         return view == object;
      }

      @Override
      public Parcelable saveState() {
         return null;
      }

      @Override
      public void restoreState(Parcelable arg0, ClassLoader arg1) {
      }

      @Override
      public void startUpdate(View arg0) {
      }

      @Override
      public void finishUpdate(View arg0) {
      }
   }


}


布局文件:
<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:paddingRight="30px"
    android:paddingLeft="30px"/>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值