public class MainActivity extends AppCompatActivity implementsViewPager.OnPageChangeListener {privateViewPager viewPager;private int[] imageResIds;private ArrayListimageViewList;private ArrayListpointViews;privateLinearLayout ll_point_container;privateString[] contentDesc;privateTextView tv_desc;private int lastEnablePoint = 0;private boolean isRunning = true;privateHandler handler;privateRunnable runnable;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//初始化布局 View 视图
initViews();//Model 数据
initData();//Controller 控制器
initAdapter();//1.
handler = newHandler();
runnable= newRunnable() {
@Overridepublic voidrun() {
viewPager.setCurrentItem(viewPager.getCurrentItem()+ 1);
handler.postDelayed(this, 2000);
}
};//2//mTimer.schedule(mTimerTask, 2000, 2000);//3//handler.postDelayed( runnable, 2000 );//开启轮询//new Thread() {//public void run() {//while(isRunning) {//try {//Thread.sleep(2000);//} catch (InterruptedException e) {//e.printStackTrace();//}// //往下跳一位//runOnUiThread(new Runnable() {//@Override//public void run() {//viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);//}//});//}//
//}//}.start();
}
@Overrideprotected voidonPause() {super.onPause();
handler.removeCallbacksAndMessages(null);
}
@Overrideprotected voidonResume() {super.onResume();
handler.postDelayed( runnable,2000);
}
@Overrideprotected voidonDestroy() {super.onDestroy();
isRunning= false;
}private voidinitViews() {
viewPager=(ViewPager) findViewById(R.id.viewpager);
viewPager.setOnPageChangeListener(this);//设置滚动更新
viewPager.setOnTouchListener(newView.OnTouchListener() {
@Overridepublic booleanonTouch(View v, MotionEvent event) {switch(event.getAction()) {caseMotionEvent.ACTION_DOWN:caseMotionEvent.ACTION_MOVE:
handler.removeCallbacksAndMessages(null);break;caseMotionEvent.ACTION_UP:
handler.postDelayed( runnable,2000);break;
}return false;
}
});
tv_desc=(TextView) findViewById(R.id.tv_desc);
ll_point_container=findViewById(R.id.ll_point_container);
}private voidinitAdapter() {
ll_point_container.getChildAt(0).setEnabled(true);
tv_desc.setText(contentDesc[0]);//设置适配器
viewPager.setAdapter(newMyAdapter());//默认设置到中间的某个位置
int pos = Integer.MAX_VALUE / 2;//viewPager.setCurrentItem(pos - 3);
viewPager.setCurrentItem(0);
}private voidinitData() {//初始化要显示的数据//图片资源id数组
imageResIds = new int[] { R.drawable.lunbo1, R.drawable.lunbo2, R.drawable.lunbo3,
R.drawable.lunbo4};//文本描述
contentDesc = new String[] { "巩俐不低俗,我就不能低俗", "朴树又回来啦!再唱经典老歌引万人大合唱","揭秘北京电影如何升级", "乐视网TV版大派送", "热血屌丝的反杀"};
imageViewList= new ArrayList();
pointViews= new ArrayList();
ImageView imageView;
View pointView;
LinearLayout.LayoutParams layoutParams;for (int i = 0; i < imageResIds.length; i++) {
imageView= new ImageView(this);
imageView.setBackgroundResource(imageResIds[i]);
imageViewList.add(imageView);//加小白点,指示器
pointView = new View(this);
pointView.setBackgroundResource(R.drawable.select);
layoutParams= new LinearLayout.LayoutParams(7, 7);if (i != 0) {
layoutParams.leftMargin= 10;
}
pointView.setEnabled(false);
ll_point_container.addView(pointView, layoutParams);
}
}class MyAdapter extendsPagerAdapter {
@Overridepublic intgetCount() {returnInteger.MAX_VALUE;
}//3、指定复用的判断逻辑
@Overridepublic booleanisViewFromObject(View view, Object object) {//当滑到新的条目,又返回来,view是否可以被复用
return view ==object;
}//1、返回要显示的条目内容,创建条目
@Overridepublic Object instantiateItem(ViewGroup container, intposition) {//container:容器:ViewPager//position:当前要显示的条目的位置
position = position % 4;
ImageView imageView=imageViewList.get(position);//a、把view对象添加到container中
container.addView(imageView);//b、把view对象返回给框架,适配器
return imageView; //必须要重写,否则抛异常
}//2、销毁条目
@Overridepublic void destroyItem(ViewGroup container, intposition, Object object) {//object 要销毁的对象
container.removeView((View) object);
}
}
@Overridepublic void onPageScrolled(int position, floatpositionOffset,intpositionOffsetPixels) {//滚动时调用
}
@Overridepublic void onPageSelected(intposition) {//新条目被选中时调用
position = position % 4;
tv_desc.setText(contentDesc[position]);//把之前的禁用,把最新的启用
ll_point_container.getChildAt(lastEnablePoint).setEnabled(false);
ll_point_container.getChildAt(position).setEnabled(true);
lastEnablePoint=position;
}
@Overridepublic void onPageScrollStateChanged(intstate) {//滚动状态变化时调用
}
}