android常见手动和自动轮播图效果
本文实例为大家分享了android手动和自动轮播图效果的具体代码,供大家参考,具体内容如下
1、准备好需要的轮播图片,图片标题(初始化,声明)。
/**轮播图片*/ privateint[]imageIds=newint[]{ R.drawable.ic_launcher, R.drawable.simple_player_control_focused_holo, R.drawable.dot_player1_1, R.drawable.jt5, }; /**轮播图片的标题*/ privateString[]titles=newString[]{ "我是一", "我是二", "我是三", "我是四", };
2、在你要轮播的布局里面加入下面的布局(相当于加入一个控件,看你想放哪里).
3、把图片和标题都设置控件里面。
/**显示的图片*/ images=newArrayList(); for(inti=0;i (); dots.add(view.findViewById(R.id.dot_0)); dots.add(view.findViewById(R.id.dot_1)); dots.add(view.findViewById(R.id.dot_2)); dots.add(view.findViewById(R.id.dot_3)); /**轮播的标题*/ title=(TextView)view.findViewById(R.id.title); title.setText(titles[0]);
4、findViewById到控件布局里面的ViewPager,new一个ViewpagerAdapter(),通过setOnPageChangeListener的方法来监听改变
viewPager=(ViewPager)view.findViewById(R.id.viewPager); adapter=newViewPagerAdapter(); viewPager.setAdapter(adapter); viewPager.setOnPageChangeListener(newViewPager.OnPageChangeListener(){ @Override publicvoidonPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels){ title.setText(titles[position]); dots.get(position).setBackgroundResource(R.drawable.dot_focused); dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal); oldPosition=position; currentItem=position; } @Override publicvoidonPageSelected(intposition){ } @Override publicvoidonPageScrollStateChanged(intstate){ } });
5、自定义一个ViewPagerAdapter
/** *自定义Adapter *内部类 */ privateclassViewPagerAdapterextendsPagerAdapter{ @Override publicintgetCount(){ returnimages.size();//传入的数据 } @Override publicbooleanisViewFromObject(Viewarg0,Objectarg1){ returnarg0==arg1; } @Override publicvoiddestroyItem(ViewGroupview,intposition,Objectobject){ //TODOAuto-generatedmethodstub //super.destroyItem(container,position,object); //view.removeView(view.getChildAt(position)); //view.removeViewAt(position); view.removeView(images.get(position)); } @Override publicObjectinstantiateItem(ViewGroupview,intposition){ //TODOAuto-generatedmethodstub view.addView(images.get(position)); returnimages.get(position); } }
6、这些自己看着改主要是线程池,handler,定时轮换
/** *图片轮播任务 * */ privateclassViewPageTaskimplementsRunnable{ @Override publicvoidrun(){ currentItem=(currentItem+1)%imageIds.length; mHandler.sendEmptyMessage(0); } } /** *接收子线程传递过来的数据 */ privateHandlermHandler=newHandler(){ publicvoidhandleMessage(android.os.Messagemsg){ viewPager.setCurrentItem(currentItem); }; }; @Override publicvoidonStop(){ //TODOAuto-generatedmethodstub super.onStop(); if(scheduledExecutorService!=null){ scheduledExecutorService.shutdown(); scheduledExecutorService=null; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。