public class Images_home_ad implements ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private ImageView[] imgs;
private ArrayList<View> arrayList;
private PagerAdapter adapter;
private int[] setmImgID;
private int[] ids;
private int round = 0;
private static final int START_VIEW = 0x000;
private static final int STOP_VIEW = 0x001;
private static final int UPDATE_VIEW = 0x002;
private static final int RECORD_VIEW = 0x003;
public Images_home_ad(View view) {
arrayList = new ArrayList<View>();
init_data(view);
//获得id
viewPager = (ViewPager) view.findViewById(R.id.ll_images_home).findViewById(R.id.images_home_viewpager);
//实现pageradapter匿名类
adapter = new PagerAdapter() {
@Override
public int getCount() {
return arrayList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(arrayList.get(position));
return arrayList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(arrayList.get(position));
}
};
viewPager.setAdapter(adapter);
//设置viewpager监听以改变原点颜色
viewPager.addOnPageChangeListener(this);
Init_imgs(view);
/*
*第一次执行发送消息使得图片轮播
*/
mHandler.sendEmptyMessage(START_VIEW);
}
/*
*周期性执行轮播图片
*/
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case START_VIEW:
mHandler.sendEmptyMessageDelayed(UPDATE_VIEW,5000);
break;
case STOP_VIEW:
mHandler.removeMessages(UPDATE_VIEW);
break;
case UPDATE_VIEW:
round++; //必须先加1 到下一位置
//轮播关键
if(round == arrayList.size()){
round = 0;
}
viewPager.setCurrentItem(round);
break;
case RECORD_VIEW:
round = msg.arg1;
break;
default:
break;
}
}
};
private void Init_imgs(View view){
imgs = new ImageView[arrayList.size()];
for (int i = 0; i < arrayList.size();i++){
imgs[i] = (ImageView) view.findViewById(R.id.ll_images_home).findViewById(ids[i]);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//发送消息
mHandler.sendMessage(Message.obtain(mHandler,RECORD_VIEW,position,0));
// 循环滑动改变点的颜色
for (int i = 0;i < arrayList.size();i++){
if (position == i){
imgs[i].setImageResource(R.drawable.point_selected);
}else {
imgs[i].setImageResource(R.drawable.point);
}
}
}
/*
*根据状态执行发送消息
*/
@Override
public void onPageScrollStateChanged(int state) {
switch (state){
//用户滑动时停止轮播
case ViewPager.SCROLL_STATE_DRAGGING:
mHandler.sendEmptyMessage(STOP_VIEW);
break;
//用户滑动完成时继续轮播
case ViewPager.SCROLL_STATE_IDLE:
mHandler.sendEmptyMessage(START_VIEW);
break;
}
}
//初始化数据
private void init_data(View view){
//获取资源id
ids = new int[]{R.id.images_home_point01,R.id.images_home_point02,
R.id.images_home_point03,R.id.images_home_point04
,R.id.images_home_point05,R.id.images_home_point06};
setmImgID = new int[]{R.raw.ad_images01,R.raw.ad_images02,R.raw.ad_images03,
R.raw.ad_images04,R.raw.ad_images05,R.raw.ad_images06,};
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[0]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[1]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[2]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[3]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[4]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[5]));
}
//获得加载到ViewPger中的页面和设置图片
public View getView(View view,int layoutID,int imgID){
view = View.inflate(view.getContext(),layoutID,null);
ImageView view1 = (ImageView) view.findViewById(R.id.images_ads01);
view1.setBackgroundResource(imgID);
return view;
}
}
Android设置ViewPager定时轮播效果(无需设置返回Integer.MAX_VALUE)
最新推荐文章于 2022-12-01 14:40:58 发布