对ViewPager的初次认识P

群里大神发了一篇关于使用ViewPager实现左右循环滑动图片的文章(http://blog.csdn.net/xiaanming/article/details/8966621),以此为参照学习ViewPager。本文为学习记录,难免有差错,望指正。

另外http://blog.csdn.net/wangjinyu501/article/details/8169924 也可以作为ViewPager参考。

大神在文中有这么一行代码;

//设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动  
        viewPager.setCurrentItem((mImageViews.length) * 100);

开始不明白,但是研究了下面这段代码后似乎知道为什么要这么写了。

@Override
		public Object instantiateItem(View container, int position) {//这个方法用来实例化页卡
			((ViewPager)container).addView(mImageViews[position % mImageViews.length],0);//添加页卡 
//			System.out.println("add  -- position =  " + position + "余数 = " + position % mImageViews.length);
			return mImageViews[position % mImageViews.length];
		}

ViewPager在载入项目时实际上载入了3个项目,即当前显示的项目、显示项左侧项目和显示项右侧项目,在本例中项目position分别是600、599、601 。当手指左滑时界面显示601,并加载602、移除599。原来想不通他是在什么地方实现了“ 滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页”,看了很多代码发现实现方式都和他不一样。作者用了一个很聪明的办法,用余数的方法很容易实现5、0、1这样的排列(这是在mImageViews.length = 6的情况下),就能很简单的实现从头到尾,从尾到头的切换了。所以选对实现方式也是一个很关键的地方。而之前的setCurrentItem()方法就是设置当前显示项的position (一开始就可以右滑跳到最后一项)。


ViewPager的点击事件监听可以写在

//将图片装载到数组中  
        mImageViews = new ImageView[imgIdArray.length];  
        for(int i=0; i<mImageViews.length; i++){  
            ImageView imageView = new ImageView(this);  
            mImageViews[i] = imageView;  
            imageView.setBackgroundResource(imgIdArray[i]);  
            imageView.setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				Toast.makeText(MainActivity.this, "this is clicked", Toast.LENGTH_SHORT).show();
    				
    			}
    		});


程序比较简单,其他的多练习练习就能明白。

最后,好好学习,天天向上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值