主Activity:
public class LsnViewPagerActivity extends Activity {
private int[] imageResIds;
private String[] titles;
private List imageViews;
private List dots;
private TextView tv_title;
private ViewPager viewPager;
private ScheduledExecutorService scheduledExecutorService;
private int currentItem = 0;//当前页面
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//图片资源ID
imageResIds = new int[]{R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d,
R.drawable.e};
//图片标题集合
titles = new String[imageResIds.length];
titles[0] = "巩俐不低俗,我就不能低俗";
titles[1] = "扑树又回来啦!再唱经典老歌引万人大合唱";
titles[2] = "揭秘北京电影如何升级";
titles[3] = "乐视网TV版大派送";
titles[4] = "热血屌丝的反杀";
//滑动的图片
imageViews = new ArrayList<ImageView>();
for(int i = 0; i < imageResIds.length; i++){
ImageView imageView = new ImageView(this);
imageView.setImageResource(imageResIds[i]);
imageViews.add(imageView);
}
//图片所对应的圆点
dots = new ArrayList<View>();
dots.add(findViewById(R.id.v_dot0));
dots.add(findViewById(R.id.v_dot1));
dots.add(findViewById(R.id.v_dot2));
dots.add(findViewById(R.id.v_dot3));
dots.add(findViewById(R.id.v_dot4));
tv_title = (TextView) findViewById(R.id.tv_title);
tv_title.setText(titles[0]);
viewPager = (ViewPager) findViewById(R.id.vp);
//给VviewPager添加数据
viewPager.setAdapter(new MyAdapter());
//页面改变监听
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
private int oldPosition = 0;
public void onPageSelected(int position) {
currentItem = position;
//改变标题
tv_title.setText(titles[position]);
//改变圆点(焦点)
dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
dots.get(position).setBackgroundResource(R.drawable.dot_focused);
oldPosition = position;
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
class MyAdapter extends PagerAdapter{
@Override
public int getCount() {
return imageResIds.length;
}
//实例化item
@Override
public Object instantiateItem(View arg0, int arg1) {
//将每个图片加入到ViewPager里
((ViewPager)arg0).addView(imageViews.get(arg1));
return imageViews.get(arg1);
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
//将每个图片在ViewPager里释放掉
((ViewPager)arg0).removeView((View)arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
//view 和 Object 是不是一个对象
return arg0 == arg1;
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
}
@Override
protected void onStart() {
//用一个定时器 来完成图片切换
//Timer 与 ScheduledExecutorService 实现定时器的效果
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
//通过定时器 来完成 每2秒钟切换一个图片
//经过指定的时间后,执行所指定的任务
//scheduleAtFixedRate(command, initialDelay, period, unit)
//command 所要执行的任务
//initialDelay 第一次启动时 延迟启动时间
//period 每间隔多次时间来重新启动任务
//unit 时间单位
scheduledExecutorService.scheduleAtFixedRate(new ViewPagerTask(), 1, 5, TimeUnit.SECONDS);
super.onStart();
}
@Override
protected void onStop() {
//停止图片切换
scheduledExecutorService.shutdown();
super.onStop();
}
//用来完成图片切换的任务
private class ViewPagerTask implements Runnable{
public void run() {
//实现我们的操作
//改变当前页面
currentItem = (currentItem + 1) % imageViews.size();
//Handler来实现图片切换
handler.obtainMessage().sendToTarget();
}
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//设定viewPager当前页面
viewPager.setCurrentItem(currentItem);
}
};
}
main.xml中:
drawable中:
dot_focused:
<?xml version="1.0" encoding="utf-8"?>
dot_normal:
<?xml version="1.0" encoding="utf-8"?>
记得加上android—support-v4.jar包