Android图片无限轮播的实现代码
本文实例为大家分享了AnAndroid图片无限轮播的具体代码,供大家参考,具体内容如下
publicclassMainActivityextendsActivity{
privateViewPagerviewPager;
privateLinearLayoutll_dot;
privateString[]imageUrls=newString[]{
"http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg",
"http://pic2.nipic.com/20090424/1468853_230119053_2.jpg",
"http://img3.3lian.com/2013/s1/20/d/57.jpg",
"http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg",
"http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg"};
//privateString[]imageUrls=newString[]{
//"http://192.168.230.1:8080/ab.jpg",
//"http://192.168.230.1:8080/ae.jpg",
//"http://192.168.230.1:8080/af.jpg",
//"http://192.168.230.1:8080/ah.jpg"};
privateArrayList<ImageView>viewList;
privateArrayList<ImageView>dotList;
Handlerhandler=newHandler(){
publicvoidhandleMessage(android.os.Messagemsg){
//先去获取到当前条目索引
intcurrentItem=viewPager.getCurrentItem();
//条目索引+1
currentItem++;
//重新设置给viewPager
viewPager.setCurrentItem(currentItem);
//再调用发延时消息的方法
sendDelayMessage();
};
};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager=(ViewPager)findViewById(R.id.viewPager);
ll_dot=(LinearLayout)findViewById(R.id.ll_dot);
//初始化图片
initViewList();
//初始化小圆点
initDots();
//设置数据适配器
viewPager.setAdapter(newMyPagerAdapter(this,viewList,handler));
//设置初始的展示条目
viewPager.setCurrentItem(viewList.size()*100000);
//设置延时切换
sendDelayMessage();
//监听viewPager的一个滑动事件
viewPager.setOnPageChangeListener(newOnPageChangeListener(){
@Override
publicvoidonPageSelected(intposition){
//遍历小点的集合
for(inti=0;i<dotList.size();i++){
//如果当前的索引值和i相等
if(position%dotList.size()==i){
//设置小点为亮色
dotList.get(i).setImageResource(R.drawable.dot_focuse);
}else{
//否则暗色
dotList.get(i).setImageResource(R.drawable.dot_normal);
}
}
}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
}
@Override
publicvoidonPageScrollStateChanged(intarg0){
}
});
}
/**
*发送延时消息
*/
privatevoidsendDelayMessage(){
handler.sendEmptyMessageDelayed(0,2000);
}
privatevoidinitDots(){
//创建一个装小点控件的集合
dotList=newArrayList<ImageView>();
dotList.clear();
for(inti=0;i<imageUrls.length;i++){
ImageViewimageView=newImageView(this);
if(i==0){
//如果是第一张,默认给一个亮的小点
imageView.setImageResource(R.drawable.dot_focuse);
}else{
//如果不是滴一个,默认给一个暗的小点
imageView.setImageResource(R.drawable.dot_normal);
}
//设置小点的默认宽高为20dp
LayoutParamsparams=newLayoutParams(20,20);
//设置小点的间距
params.setMargins(5,0,5,0);
ll_dot.addView(imageView,params);
//往小点集合中添加view
dotList.add(imageView);
}
}
privatevoidinitViewList(){
//先使用xutils的工具类
BitmapUtilsbitmapUtils=newBitmapUtils(this);
viewList=newArrayList<ImageView>();
for(inti=0;i<imageUrls.length;i++){
//创建imageView并通过工具类将图片设置到控件上
ImageViewimageView=newImageView(this);
bitmapUtils.display(imageView,imageUrls[i]);
viewList.add(imageView);
}
}
}
适配器
publicclassMyPagerAdapterextendsPagerAdapter{
privateList<ImageView>viewList;
privateContextcontext;
privateHandlerhandler;
publicMyPagerAdapter(Contextcontext,List<ImageView>viewList,
Handlerhandler){
this.context=context;
this.viewList=viewList;
this.handler=handler;
}
@Override
publicintgetCount(){
returnInteger.MAX_VALUE;
}
@Override
publicbooleanisViewFromObject(Viewarg0,Objectarg1){
returnarg0==arg1;
}
@Override
publicObjectinstantiateItem(ViewGroupcontainer,intposition){
//通过控件集合获取imageView添加到容器中,并作为key返回
ImageViewimageView=viewList.get(position%viewList.size());
imageView.setOnTouchListener(newOnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
switch(event.getAction()){
//当按下的时候,停止轮播
caseMotionEvent.ACTION_DOWN:
//移除所有的回调和消息
handler.removeCallbacksAndMessages(null);
break;
//抬起
caseMotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(0,2000);
break;
//取消的时候,继续开始录播
caseMotionEvent.ACTION_CANCEL:
handler.sendEmptyMessageDelayed(0,2000);
break;
default:
break;
}
//触摸事件不被消费,true消费该触摸事件
returntrue;
}
});
container.addView(imageView);
returnimageView;
}
@Override
publicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){
//super.destroyItem(container,position,object);
container.removeView((View)object);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。