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) {//滾動狀态變化時調用
}
}