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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。