package com.teffy.viewpager;

import java.util.ArrayList;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
    private ViewPager mViewPager;
    private ViewPagerAdapter adapter;
    String[] urls = new String[] {
            "http://img4.imgtn.bdimg.com/it/u=3741386655,1614062939&fm=21&gp=0.jpg",
            "http://img1.imgtn.bdimg.com/it/u=112648096,582309873&fm=23&gp=0.jpg",
            "http://photocdn.sohu.com/20120213/Img334596783.jpg",
            "http://pic11.nipic.com/20101210/2531170_111449179301_2.jpg",
            "http://www.foto8.net/files/201004/27/d272194910.jpg",
            "http://www.sootuu.com/photo/UploadFile/2006-4/20064304138937.jpg",
            "http://www.itxtbook.com/attachment/Day_081022/23_163307_e9b4513a7afee66.jpg",
            "http://img7.mypsd.com.cn/20120821/Mypsd_13920_201208211752500005B.jpg"
    };
    private ArrayList<View> dots = new ArrayList<View>();
    private int oldPosition = 0;//记录上一次点的位置
    private int currentItem; //当前页面
    private ScheduledExecutorService scheduledExecutorService;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = (ViewPager) findViewById(R.id.vp_guanggao);
        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                dots.get(oldPosition).setBackgroundResource(R.drawable.dxt_point_nomral);
                dots.get(position).setBackgroundResource(R.drawable.dxt_point_selected);
                oldPosition = position;
                currentItem = position;
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
         initDots();    
        adapter = new ViewPagerAdapter(this,urls);
        mViewPager.setAdapter(adapter);
        vpChangeTask();
    }


    private void initDots() {
        LinearLayout ll_vp_point = (LinearLayout) findViewById(R.id.ll_vp_point);
        for (int i = 0; i <urls.length; i++) {
            ImageView iv_image = (ImageView) getLayoutInflater().inflate(R.layout.item_dots, null);
            if(i ==0){
                iv_image.setBackgroundResource(R.drawable.dxt_point_selected);
            }
            iv_image.setTag(urls[i]);
            ll_vp_point.addView(iv_image);
            dots.add(iv_image);
        }
    }

    private void vpChangeTask() {
        scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
        scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2,3, TimeUnit.SECONDS);
    }
    // 切换图片
    private class ViewPagerTask implements Runnable {
        @Override
        public void run() {
            currentItem = (currentItem + 1) %urls.length;
            mHandler.obtainMessage().sendToTarget();
        }
    }
    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            mViewPager.setCurrentItem(currentItem);
        }
    };
}
View Code

相关文章: