xml代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="150dp" /> <LinearLayout android:layout_alignBottom="@id/vp" android:id="@+id/lin" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" > </LinearLayout> </RelativeLayout>适配器
public class MyPagerAdapter extends PagerAdapter { private List<ImageView> list; private Context context; private Handler handler; public MyPagerAdapter(List<ImageView> list, Context context, Handler handler) { super(); this.list = list; this.context = context; this.handler = handler; } @Override public int getCount() { // TODO Auto-generated method stub return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView image=list.get(position%list.size()); image.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //按下停止轮播 移除所有的回调和消息 handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_UP: //按下停止轮播 移除所有的回调和消息 handler.sendEmptyMessageDelayed(0,2000); break; case MotionEvent.ACTION_CANCEL: //取消继续轮播 handler.sendEmptyMessageDelayed(0,2000); break; default: break; } return true; } }); container.addView(image); return image; } }main
public class MainActivity extends Activity { private ViewPager vp; private LinearLayout lin; private List<ImageView> listimage; private List<ImageView> ldlist; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { int item = vp.getCurrentItem(); item++; vp.setCurrentItem(item); handler.sendEmptyMessageDelayed(1, 2000); super.handleMessage(msg); } }; private String[] imageUrls = new String[] { "http://169.254.185.225:8080/banner0.jpg", "http://169.254.185.225:8080/banner1.jpg", "http://169.254.185.225:8080/banner2.jpg", "http://169.254.185.225:8080/banner3.jpg" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); // 初始化图片 initImage(); // 初始化小圆点 iniCircle(); // 设置设配器 vp.setAdapter(new MyPagerAdapter(listimage, this,handler)); //设置初始的展示条目 vp.setCurrentItem(listimage.size()*100000); handler.sendEmptyMessageDelayed(1, 2000); vp.setOnPageChangeListener(listener); } // viewpager 设置滑动监听 OnPageChangeListener listener=new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { for (int i = 0; i < ldlist.size(); i++) { if (i==arg0%listimage.size()) { ldlist.get(i).setImageResource(R.drawable.focuse); }else{ ldlist.get(i).setImageResource(R.drawable.normal); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }; private void initImage() { listimage = new ArrayList<ImageView>(); BitmapUtils binUtils = new BitmapUtils(this); for (int i = 0; i < imageUrls.length; i++) { ImageView image = new ImageView(this); // 通过工具类将图片设置到控件上 binUtils.display(image, imageUrls[i]); // 将image添加到集合 listimage.add(image); } } private void iniCircle() { ldlist = new ArrayList<ImageView>(); for (int i = 0; i < imageUrls.length; i++) { ImageView image = new ImageView(this); if (i == 0) { // 如果是第一张 给一个亮的小点 image.setImageResource(R.drawable.focuse); } else { // 如果不是 给暗的小点 image.setImageResource(R.drawable.normal); } // 设置小点的默认高度 宽度 LayoutParams params = new LayoutParams(20, 20); // 设置小点的间距 params.setMargins(5, 0, 5, 0); lin.addView(image, params); ldlist.add(image); } } // 初始化控件 private void init() { vp = (ViewPager) findViewById(R.id.vp); lin = (LinearLayout) findViewById(R.id.lin); } }