Android实训项目报告

2019.7.4(实训第四天)

实验目标:本次实训,主要目标是完善第三天的轮播图,使轮播图可以自动轮播

实验步骤:

              在包adapter下创建类home_vp,首先,在这个类下创建四个抽象方法,getCount(),isViewFromObject(),destroyItem(),instantiateItem()

              由于本次项目我们使用ViewPager  视图翻页工具,需要为它配置一个适配器,用于装载轮播图片,其中,getCount()方法,应返回数据源的长度大小,但本次项目为了实现无限循环的效果,需返回一个最大值,如下:

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

这个数值可是20亿或更高的数值,用户即使再怎么滑也不会滑到上亿次级别;

               为避免出现空指针异常,在instantiateItem()方法下,添加如下代码:

public Object instantiateItem(View container, int position) {
		View v=View.inflate(context, R.layout.page, null);
		ImageView im=(ImageView) v.findViewById(R.id.im);
		im.setImageResource(bannerImages[position%bannerImages.length]);
		 ((ViewPager)container).addView(v);
		 return v;
	}

改代码段接收视图容器container及位置两个参数,创建一个view对象v,接收上下文变量context和layout文件page,同时,在创建一个ImageViewe对象im,并通过查询id将page.xml文件传递给im,最后将v对象添加到container中,即轮播图容器。

 

 其中

im.setImageResource(bannerImages[position%bannerImages.length]);

是为了取余item的总数量,这样索引位置就不会超过资源数据的数量,例如1%777=1,1%999=1。

              最后,在类HomeFragment中,添加如下代码段:

private void autoScroll() {
		// TODO Auto-generated method stub
		mHander.postDelayed(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				vp.setCurrentItem(vp.getCurrentItem()+1, true);
				mHander.postDelayed(this, 2000);
			}
		}, 5000);
	}

其作用是设置轮播图自动播放,并由该类中的initData()的方法调用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值