ViewPager轮播

原创 2016年05月31日 08:10:04

package com.rong.viewpager;

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

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class MainActivity extends Activity {

private ViewPager vp;
private LinearLayout ll;
private int[] images={R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,R.drawable.image5};

private Handler handler=new Handler(){

    @Override
    public void handleMessage(Message msg) {
        if(msg.what==0){
            int currentItem = vp.getCurrentItem();
            vp.setCurrentItem(++currentItem);
            handler.sendEmptyMessageDelayed(0, 2000);
        }
    }


};
private List<ImageView> list_oval;
int lastIndex;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    vp = (ViewPager) findViewById(R.id.vp);
    ll = (LinearLayout) findViewById(R.id.ll);
    initoval();
    vp.setAdapter(new PagerAdapter() {

        @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 Integer.MAX_VALUE;
        }

        @Override
        public void destroyItem(ViewGroup container, int position,
                Object object) {

            container.removeView((View) object);

        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView image = new ImageView(MainActivity.this);
            image.setBackgroundResource(images[position%images.length]);
            container.addView(image);
            return image;
        }

    });
    //发送消息给handler
    handler.sendEmptyMessageDelayed(0, 2000);

    vp.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            for (int i = 0; i < list_oval.size(); i++) {
                if(i==arg0%images.length){
                    list_oval.get(i).setImageResource(R.drawable.ischeck);
                }else{
                    list_oval.get(i).setImageResource(R.drawable.uncheck);
                }
            }
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });

}

/**
 * 自定义小圆点
 */
private void initoval(){
    list_oval=new ArrayList<ImageView>();
    for (int i = 0; i < images.length; i++) {
        ImageView image=new ImageView(MainActivity.this);
        if(i==0){
            image.setImageResource(R.drawable.ischeck);
        }else{
            image.setImageResource(R.drawable.uncheck);
        }

        LayoutParams layoutParams=new LayoutParams(20, 20);
        layoutParams.setMargins(5, 0, 5, 0);
        ll.addView(image, layoutParams);
        list_oval.add(image);
    }
}

}

/**
适配器Adapters
*/
package com.bwie.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class MyVp_FragMyShow_Adapter extends PagerAdapter {

private int [] int_image;
private Context context;

public MyVp_FragMyShow_Adapter(int[] int_image, Context context) {
    super();
    this.int_image = int_image;
    this.context = context;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return Integer.MAX_VALUE;
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    // TODO Auto-generated method stub
    return arg0==arg1;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {

    container.removeView((View) object);

}

@Override
public Object instantiateItem(ViewGroup container, int position) {

        //创建一个ImageView
        ImageView image=new ImageView(context);
        //加载图片
        image.setBackgroundResource(int_image[position%int_image.length]);
        container.addView(image);
        return image;
}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android使用ViewPager实现左右循环滑动及轮播效果

ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验。此外,某些区域性的Vie...

Android中可无限循环轮播的ViewPager

  • 2017年03月19日 20:56
  • 26.61MB
  • 下载

viewPager自动轮播

  • 2016年08月29日 20:57
  • 13.76MB
  • 下载

android TV开发:使用ViewPager实现图片自动轮播效果

1.实现效果:可以ViewPager的子view响应点击事件+遥控器按键从子view直接跳到旁边控件(由于gif最大只能是2M,就只能录屏时间短一点,建议csdn可以上传容量更大的图片)...
  • meetings
  • meetings
  • 2016年10月26日 21:43
  • 19686

ViewPager实现广告的自动轮播

  • 2015年12月01日 10:20
  • 3.6MB
  • 下载

自动轮播viewpager

  • 2017年03月29日 16:02
  • 2.96MB
  • 下载

ViewPager实现无限自动轮播

创建布局文件,主布局文件 LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ap...

ViewPager轮播图片无限循环(一)

  • 2014年11月20日 16:53
  • 2.8MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ViewPager轮播
举报原因:
原因补充:

(最多只允许输入30个字)