ViewPage无限循环

实现轮播的效果ViewPage:分为“假无限循环”和“真无限循环”。

首先我们要了解viewpage这个控件,这个控件主要的作用是滑动效果,它和listview类似也有个适配器PagerAdapter,因此如果我们写个适配器继承PageAdapter设置它的长度是Integer.MAX_VALUE同时在显示图片的时候通过求余的方式获取显示第几张图片的方法,那么viewpage就实现了这种假无限滑动效果。

@Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

这种效果可以看做是:0%4 - 1%4 - 2%4 - 3%4 - 4%4 - 5%4 - 6%4 - 7%4 - 8%4………..n%4。

真无限循环效果:3 - 0 - 1 - 2 - 3 - 0。即在首位置添加最后一张图片,在末尾位置添加最初一个图片。
上核心代码吧:
viewpage.xml

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:orientation="vertical" >

        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
<!-- 用来显示点点的 -->
            <LinearLayout
                android:id="@+id/viewGroup"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_marginBottom="30dp"
                android:gravity="center_horizontal"
                android:orientation="horizontal" >
            </LinearLayout>
        </RelativeLayout>
    </FrameLayout>

ViewPageAdapter.java适配器

    @Override
    public void destroyItem(View container, int position, Object object) {
    //不加这个判断条件的话,最后一张图片循环显示第一张图片的时候会出现黑屏
        if (position != 0 && position != iv.length - 1) {
            ((ViewPager)container).removeView(iv[position]);
        }
    }

    @Override
    public Object instantiateItem(View container, int position) {
        try {
            ((ViewPager)container).addView(iv[position]);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return iv[position];
    }

ViewPageActivity.java

@Override
    public void onPageSelected(int arg0) {
        //实现循环即在最后一张图片跳或在第一张图片跳时回到第一张图片或最后一张
        int position = arg0;
        if(arg0 == 0){
            position = iv.length-2;
        }else if(arg0 == iv.length-1){
            position = 1;
        }
        if(position != arg0){
            viewPager.setCurrentItem(position,false);
        }
        setImageBackground(position-1);
    }

详细代码下载地址:http://download.csdn.net/detail/lihui_92_11_11/8569651

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值