viewpager无限轮播加点

来源:互联网 发布:js删除指定class的div 编辑:程序博客网 时间:2024/05/17 06:54

//首先在Xml中画点  画两个颜色不一样的点  在drawable文件夹下

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">
    <solid android:color="@android:color/holo_red_dark"></solid>
    <size android:height="10dp" android:width="10dp"/>
</shape>



//第二个点


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">


    <solid android:color="@android:color/holo_green_dark"></solid>

    <size android:height="10dp" android:width="10dp"/>


</shape>

 


代码



public class MainActivity extends Activity {

    private static final int W = 0;
    private ViewPager vp;
    private int[] image={R.drawable.a,R.drawable.b,R.drawable.c};
    private Button button;
    private LinearLayout ll;
    List<ImageView> imageiv=new ArrayList<ImageView>();
    //无限轮播的handler  接收msg
    private Handler handler =new Handler(){
        public void handleMessage(android.os.Message msg) {
            if(msg.what==W)
            {
                int currentItem = vp.getCurrentItem();
                currentItem++;
                vp.setCurrentItem(currentItem);
            }
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        vp = (ViewPager) findViewById(R.id.vp);
        button = (Button) findViewById(R.id.button);
        ll = (LinearLayout) findViewById(R.id.ll);
        vp.setAdapter(new MyAdapter());
        vp.setCurrentItem(10000*image.length);
        //代用加点的方法
        intiDian();
        button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                
            }
        });
        //在Viewpager的点击事件中 让点变化
        vp.setOnPageChangeListener(new OnPageChangeListener() {
            
            @Override
            public void onPageSelected(int position) {
                // TODO Auto-generated method stub
                if(position%image.length==2)
                {
                    button.setVisibility(View.VISIBLE);
                }
                else
                {
                    button.setVisibility(View.INVISIBLE);
                }  
                
                for (int i = 0; i <=imageiv.size()-1; i++) {
                    
                    
                    if(i==position%image.length)
                    {
                        
                        imageiv.get(i).setImageResource(R.drawable.write);
                        
                    }
                    else
                    {
                        imageiv.get(i).setImageResource(R.drawable.red);
                    }
                }
                }
            
            @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
                
            }
        });
        
        //viewpager的自动轮播
        handler.sendEmptyMessageDelayed(W, 2000);
    }

    //添加点的方法
    private void intiDian() {
        
        
        for (int i = 0; i < image.length; i++) {
            ImageView iv = new ImageView(MainActivity.this);
            if(i==0)
            {
                //在Xml中画点
                iv.setImageResource(R.drawable.write);
            }
            else
            {
                iv.setImageResource(R.drawable.red);
                
            }
            
             LayoutParams params=new LayoutParams(20, 20);
             params.setMargins(15, 0, 15, 0);
             ll.addView(iv,params);
             imageiv.add(iv);
        }  
    }
    class MyAdapter extends PagerAdapter{

        private View view;
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            //viewpager的无限轮播
            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) {
            // TODO Auto-generated method stub
            container.removeView((View) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // TODO Auto-generated method stub
            view = LayoutInflater.from(MainActivity.this).inflate(R.layout.vp_item, null);
            ImageView iv = (ImageView) view.findViewById(R.id.iv);

            //修改position 实现无限轮播
            iv.setImageResource(image[position%image.length]);
            container.addView(view);    
            return view;   
        }
    }

}
 
原创粉丝点击