网友通过本文主要向大家介绍了android实现图片轮播,android实现轮播图,android实现登录注册,android实现页面跳转,android搜索功能实现等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
android实现无限轮播,android实现轮播
1 在ViewPager的适配器中的getCount()长度设置无限大Integer.MAX_VALUE
2 明白当前currentIten 为position % images.length;
3 设置一开始ViewPager的位置 viewPager.setCurrentItem((images.length) * 1000);这样刚开始就可以向左滑动了
4 在OnPageChangeListener ViewPager的滑动监听中设置小点的位置
5 设置Handler 定时滑动开启滑动
6 在onResume中发送空消息,在onPause中移除消息将所有的Callbacks和Messages全部清除掉,避免内存泄露。
如下是主代码 图片是本地的
1 package com.demo.sb.main; 2 3 import java.util.ArrayList; 4 import com.demo.sb.utils.DensityUtil; 5 import com.demo.suibian.R; 6 import android.annotation.SuppressLint; 7 import android.app.Activity; 8 import android.os.Bundle; 9 import android.os.Handler; 10 import android.support.v4.view.PagerAdapter; 11 import android.support.v4.view.ViewPager; 12 import android.support.v4.view.ViewPager.OnPageChangeListener; 13 import android.view.MotionEvent; 14 import android.view.View; 15 import android.view.View.OnClickListener; 16 import android.view.View.OnTouchListener; 17 import android.view.ViewGroup; 18 import android.widget.ImageView; 19 import android.widget.LinearLayout; 20 21 public class MActivity_Luenbo extends Activity { 22 23 private ViewPager viewPager; 24 private LinearLayout group; 25 private int[] images = { R.drawable.a, R.drawable.c, R.drawable.d, 26 R.drawable.guide_1, R.drawable.guide_2 }; 27 private ArrayList<ImageView> mImageViewList; 28 private ImageView[] diandian;// ViewPager上的点点 29 private int selectedItem = 0; 30 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 // TODO Auto-generated method stub 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.mactivity_luenbo); 36 viewPager = (ViewPager) findViewById(R.id.vp_viewPager); 37 group = (LinearLayout) findViewById(R.id.ll_viewGroup); 38 init(); 39 40 } 41 42 @SuppressLint("HandlerLeak") 43 private Handler mHandler = new Handler() { 44 public void handleMessage(android.os.Message msg) { 45 viewPager.setCurrentItem(selectedItem + 1); 46 mHandler.sendEmptyMessageDelayed(0, 3000); 47 }; 48 }; 49 50 private void init() { 51 // TODO Auto-generated method stub 52 // 引导3个ViewPager 53 mImageViewList = new ArrayList<ImageView>(); 54 for (int i = 0; i < images.length; i++) { 55 ImageView imageView = new ImageView(this); 56 imageView.setBackgroundResource(images[i]); 57 mImageViewList.add(imageView); 58 } 59 60 // 将点点加入到ViewGroup中 61 diandian = new ImageView[images.length]; 62 for (int i = 0; i < images.length; i++) { 63 // 循环加入点点图片组 64 diandian[i] = new ImageView(this); 65 if (i == 0) { 66 diandian[i].setImageResource(R.drawable.page_indicator_focused); 67 } else { 68 diandian[i] 69 .setImageResource(R.drawable.page_indicator_unfocused); 70 } 71 diandian[i].setPadding(8, 8, 8, 8); 72 group.addView(diandian[i]); 73 } 74 viewPager.setAdapter(new GuideAdapter()); 75 // 设置监听,主要是设置点点的背景 76 viewPager.setOnPageChangeListener(new GuidePagerListener()); 77 // 设置ViewPager的默认项,设置为长度的1000倍,这样开始就能向左滑动了 78 viewPager.setCurrentItem((images.length) * 1000); 79 } 80 81 /** 82 * 每次当onResume有焦点时发送个空消息开始轮播 83 */ 84 @Override 85 protected void onResume() { 86 // TODO Auto-generated method stub 87 super.onResume(); 88 mHandler.sendEmptyMessageDelayed(0, 2000); 89 } 90 91 /** 92 * 当暂停时停止轮播 93 */ 94 @Override 95 protected void onPause() { 96 // TODO Auto-generated method stub 97 super.onPause(); 98 mHandler.removeCallbacksAndMessages(null); 99 } 100 101 /** 102 * ViewPager的适配器 103 * 104 */ 105 private class GuideAdapter extends PagerAdapter { 106 <