public class MainActivity extends Activity { private int[] p_w_picpathResIds = { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, }; private String[] descs = { "鞏俐不低俗,我就不能低俗", "撲樹又回來啦!再唱經典老歌引萬人大合唱", "揭祕北京電影如何升級", "樂視網TV版大派送", "熱血屌絲的反殺", }; private View[] dots = new View[p_w_picpathResIds.length]; private ImageView[] p_w_picpaths = new ImageView[p_w_picpathResIds.length]; /** 當前選中的點 */ private View currentDot; /** ViewPager的頁數 */ private int pageSize = p_w_picpathResIds.length * 10000 * 100; private int halfPageSize = pageSize / 2; /** 自動切換圖片 */ private static final int AUTO_SWITCH_IMAGE = 0; private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case AUTO_SWITCH_IMAGE: swithImage(); break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view_pager = (ViewPager) findViewById(R.id.view_pager); tv_desc = (TextView) findViewById(R.id.tv_desc); ll_dots = (LinearLayout) findViewById(R.id.ll_dots); for (int i = 0; i < p_w_picpathResIds.length; i++) { initImages(i); initDots(i); } view_pager.setOnPageChangeListener(mOnPageChangeListener); changeDescAndDot(0); view_pager.setAdapter(adapter); view_pager.setCurrentItem(halfPageSize); } @Override protected void onStart() { super.onStart(); sendSwitchImageMessage(); } @Override protected void onStop() { super.onStop(); removeSiwtchImageMessage(); } /** 移除切換圖片的消息 */ private void removeSiwtchImageMessage() { handler.removeMessages(AUTO_SWITCH_IMAGE); } /** 切換圖片 */ protected void swithImage() { int currentItem = view_pager.getCurrentItem(); if (currentItem == view_pager.getAdapter().getCount() - 1) { currentItem = 0; } else { currentItem++; } view_pager.setCurrentItem(currentItem); sendSwitchImageMessage(); } /** * 發送切換圖片的消息 */ private void sendSwitchImageMessage() { handler.sendEmptyMessageDelayed(AUTO_SWITCH_IMAGE, 3000); } OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() { // 當某一頁被選擇的時候 @Override public void onPageSelected(int position) { changeDescAndDot(position); } // 當頁面滑動的時候 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } // 當頁面滑動狀態發生改變的時候 @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_IDLE) { sendSwitchImageMessage(); } else { // 當前不是空閒狀態 removeSiwtchImageMessage(); } } }; /** * 改變圖片描述和點 * @param position */ private void changeDescAndDot(int position) { position = position % p_w_picpaths.length; // 讓position在 0 ~ p_w_picpaths.length - 1之間 tv_desc.setText(descs[position]); // 如果原來有選中的點,把原來的變成未選擇狀態 if (currentDot != null) { currentDot.setSelected(false); } // 把當前位置的點變成選擇狀態 dots[position].setSelected(true); currentDot = dots[position]; } /** 初始化ViewPager裏面的點 */ private void initDots(int i) { dots[i] = new View(this); LinearLayout.LayoutParams params = new LayoutParams(5, 5); if (i != 0) { // 如果不是第一個點要設置marginLeft屬性 params.leftMargin = 5; } dots[i].setLayoutParams(params); dots[i].setBackgroundResource(R.drawable.selector_dot); ll_dots.addView(dots[i]); } /** 初始化圖片 */ private void initImages(int i) { p_w_picpaths[i] = new ImageView(this); p_w_picpaths[i].setBackgroundResource(p_w_picpathResIds[i]); } PagerAdapter adapter = new PagerAdapter() { @Override public int getCount() { return pageSize; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * 生成要顯示的界面 * 相當於BaseAdapter中的getView * @param container ViewPager對象 * @param position 要生成界面的位置 * */ @Override public Object instantiateItem(ViewGroup container, int position) { position = position % p_w_picpaths.length; // 讓position在 0 ~ p_w_picpaths.length - 1之間 ImageView p_w_picpathView = p_w_picpaths[position]; container.addView(p_w_picpathView); return p_w_picpathView; }; /** * 銷燬一個界面 * @param container ViewPager對象 * @param position 要銷燬界面的位置 * @param object instantiateItem方法的返回值 */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }; }; private TextView tv_desc; private ViewPager view_pager; private LinearLayout ll_dots; }
廣告條
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.