1. 程式人生 > >ViewPager實現每隔兩秒自動切換圖片

ViewPager實現每隔兩秒自動切換圖片

複製程式碼
  1 import java.util.ArrayList;
  2 import java.util.concurrent.Executors;
  3 import java.util.concurrent.ScheduledExecutorService;
  4 import java.util.concurrent.TimeUnit;
  5 
  6 import android.app.Activity;
  7 import android.os.Bundle;
  8 import android.os.Handler;
  9 import android.os.Message;
10 import android.support.v4.view.PagerAdapter; 11 import android.support.v4.view.ViewPager; 12 import android.support.v4.view.ViewPager.OnPageChangeListener; 13 import android.view.View; 14 import android.view.ViewGroup; 15 import android.widget.ImageView; 16 import android.widget.TextView; 17
18 public class MainActivity extends Activity { 19 20 private int imageIds[]; 21 private String[] titles; 22 private ArrayList<ImageView> images; 23 private ArrayList<View> dots; 24 private TextView title; 25 private ViewPager mViewPager; 26 private
ViewPagerAdapter adapter; 27 28 private int oldPosition = 0;//記錄上一次點的位置 29 private int currentItem; //當前頁面 30 private ScheduledExecutorService scheduledExecutorService; 31 32 @Override 33 public void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_main); 36 37 //圖片ID 38 imageIds = new int[]{ 39 R.drawable.a, 40 R.drawable.b, 41 R.drawable.c, 42 R.drawable.d, 43 R.drawable.e 44 }; 45 46 //圖片標題 47 titles = new String[]{ 48 "鞏俐不低俗,我就不能低俗", 49 "撲樹又回來啦!再唱經典老歌引萬人大合唱", 50 "揭祕北京電影如何升級", 51 "樂視網TV版大派送", 52 "熱血屌絲的反殺" 53 }; 54 55 //顯示的圖片 56 images = new ArrayList<ImageView>(); 57 for(int i =0; i < imageIds.length; i++){ 58 ImageView imageView = new ImageView(this); 59 imageView.setBackgroundResource(imageIds[i]); 60 61 images.add(imageView); 62 } 63 64 //顯示的點 65 dots = new ArrayList<View>(); 66 dots.add(findViewById(R.id.dot_0)); 67 dots.add(findViewById(R.id.dot_1)); 68 dots.add(findViewById(R.id.dot_2)); 69 dots.add(findViewById(R.id.dot_3)); 70 dots.add(findViewById(R.id.dot_4)); 71 72 title = (TextView) findViewById(R.id.title); 73 title.setText(titles[0]); 74 75 mViewPager = (ViewPager) findViewById(R.id.vp); 76 77 adapter = new ViewPagerAdapter(); 78 mViewPager.setAdapter(adapter); 79 80 mViewPager.setOnPageChangeListener(new OnPageChangeListener() { 81 82 83 84 @Override 85 public void onPageSelected(int position) { 86 // TODO Auto-generated method stub 87 title.setText(titles[position]); 88 89 dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal); 90 dots.get(position).setBackgroundResource(R.drawable.dot_focused); 91 92 oldPosition = position; 93 currentItem = position; 94 } 95 96 @Override 97 public void onPageScrolled(int arg0, float arg1, int arg2) { 98 // TODO Auto-generated method stub 99 100 } 101 102 @Override 103 public void onPageScrollStateChanged(int arg0) { 104 // TODO Auto-generated method stub 105 106 } 107 }); 108 109 } 110 111 private class ViewPagerAdapter extends PagerAdapter { 112 113 @Override 114 public int getCount() { 115 // TODO Auto-generated method stub 116 return images.size(); 117 } 118 119 //是否是同一張圖片 120 @Override 121 public boolean isViewFromObject(View arg0, Object arg1) { 122 // TODO Auto-generated method stub 123 return arg0 == arg1; 124 } 125 126 @Override 127 public void destroyItem(ViewGroup view, int position, Object object) { 128 // TODO Auto-generated method stub 129 // super.destroyItem(container, position, object); 130 // view.removeViewAt(position); 131 view.removeView(images.get(position)); 132 133 } 134 135 @Override 136 public Object instantiateItem(ViewGroup view, int position) { 137 // TODO Auto-generated method stub 138 view.addView(images.get(position)); 139 140 return images.get(position); 141 } 142 } 143 144 @Override 145 protected void onStart() { 146 // TODO Auto-generated method stub 147 super.onStart(); 148 149 scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); 150 151 //每隔2秒鐘切換一張圖片 152 scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS); 153 } 154 155 //切換圖片 156 private class ViewPagerTask implements Runnable { 157 158 @Override 159 public void run() { 160 // TODO Auto-generated method stub 161 currentItem = (currentItem +1) % imageIds.length; 162 //更新介面 163 // handler.sendEmptyMessage(0); 164 handler.obtainMessage().sendToTarget(); 165 } 166 167 } 168 169 private Handler handler = new Handler(){ 170 171 @Override 172 public void handleMessage(Message msg) { 173 // TODO Auto-generated method stub 174 //設定當前頁面 175 mViewPager.setCurrentItem(currentItem); 176 } 177 178 }; 179 180 @Override 181 protected void onStop() { 182 // TODO Auto-generated method stub 183 super.onStop(); 184 } 185 186 187 188 }