Android中图片的无限轮播

MainActivity中:


  
  
  1. String []imgArray={ "http://img3.imgtn.bdimg.com/it/u=2685347427,857849712&fm=21&gp=0.jpg",
  2. "http://img1.imgtn.bdimg.com/it/u=4202140919,772960800&fm=21&gp=0.jpg",
  3. "http://img4.imgtn.bdimg.com/it/u=3646050487,856369339&fm=21&gp=0.jpg",
  4. "http://img2.imgtn.bdimg.com/it/u=2602918815,692833193&fm=21&gp=0.jpg" };
  5. private LinearLayout ll;
  6. Handler handler= new Handler(){
  7. public void handleMessage(android.os.Message msg) {
  8. super.handleMessage(msg);
  9. int currentItem=vp.getCurrentItem();
  10. currentItem++;
  11. vp.setCurrentItem(currentItem);
  12. handler.sendEmptyMessageDelayed( 0, 2000);
  13. };
  14. };
  15. private ViewPager vp;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. vp = (ViewPager)findViewById(R.id.vp);
  21. ll = (LinearLayout)findViewById(R.id.ll);
  22. vp.setAdapter( new Myadapter( this, imgArray, handler));
  23. initDots();
  24. vp.setOnPageChangeListener( new OnPageChangeListener() {
  25. @Override
  26. public void onPageSelected(int arg0) {
  27. // TODO Auto-generated method stub
  28. for( int i= 0;i<imgArray.length;i++){
  29. ImageView imageView=(ImageView)ll.getChildAt(i);
  30. if(i==arg0%imgArray.length){
  31. imageView .setImageResource(R.drawable.point_selected);
  32. } else{
  33. imageView .setImageResource(R.drawable.point_mormal);
  34. }
  35. }
  36. }
  37. @Override
  38. public void onPageScrolled(int arg0, float arg1, int arg2) {
  39. }
  40. @Override
  41. public void onPageScrollStateChanged(int arg0) {
  42. }
  43. });
  44. vp.setCurrentItem(imgArray.length* 1000);
  45. handler.sendEmptyMessageDelayed( 0, 2000);
  46. }
  47. @Override
  48. protected void onStop() {
  49. super.onStop();
  50. //移除所有消息和任务
  51. handler.removeCallbacksAndMessages( null);
  52. }
  53. private void initDots() {
  54. // TODO Auto-generated method stub
  55. for( int i= 0;i<imgArray.length;i++){
  56. ImageView iv= new ImageView( this);
  57. if(i== 0){
  58. //变亮
  59. iv.setImageResource(R.drawable.point_selected);
  60. } else{
  61. iv.setImageResource(R.drawable.point_mormal);
  62. }
  63. LayoutParams params= new LayoutParams( 20, 20);
  64. params.setMargins( 5, 2, 5, 2);
  65. ll.addView(iv,params);
  66. }
  67. }
Myadapter extends PagerAdapter:


  
  
  1. private Context context;
  2. private String [] imgarray;
  3. private Handler handler;
  4. public Myadapter(Context context, String[] imgarray,Handler handler) {
  5. super();
  6. this.context = context;
  7. this.imgarray = imgarray;
  8. this.handler=handler;
  9. }
  10. @Override
  11. public int getCount() {
  12. // TODO Auto-generated method stub
  13. return Integer.MAX_VALUE;
  14. }
  15. @Override
  16. public boolean isViewFromObject(View arg0, Object arg1) {
  17. // TODO Auto-generated method stub
  18. return arg0==arg1;
  19. }
  20. @Override
  21. public void destroyItem(ViewGroup container, int position, Object object) {
  22. // TODO Auto-generated method stub
  23. container.removeView((View) object);
  24. }
  25. @Override
  26. public Object instantiateItem(ViewGroup container, int position) {
  27. // TODO Auto-generated method stub
  28. ImageView imageView= new ImageView(context);
  29. imageView.addOnPageChangeListener( new OnTouchListener() {
  30. @Override
  31. public boolean onTouch(View v, MotionEvent event) {
  32. // TODO Auto-generated method stub
  33. switch (event.getAction()) {
  34. case MotionEvent.ACTION_DOWN:
  35. handler.removeCallbacksAndMessages( null);
  36. break;
  37. case MotionEvent.ACTION_UP:
  38. case MotionEvent.ACTION_CANCEL:
  39. handler.sendEmptyMessageDelayed( 0, 2000);
  40. break;
  41. default:
  42. break;
  43. }
  44. return true;
  45. }
  46. });
  47. BitmapUtils bitmapUtils= new BitmapUtils(context);
  48. bitmapUtils.display(imageView, imgarray[position%imgarray.length]);
  49. container.addView(imageView);
  50. return imageView;
  51. }
layout:


  
  
  1. <android.support.v4.view.ViewPager
  2. android:layout_width= "match_parent"
  3. android:layout_height= "match_parent"
  4. android:id= "@+id/vp" />
  5. <LinearLayout
  6. android:layout_width= "fill_parent"
  7. android:layout_height= "wrap_content"
  8. android:id= "@+id/ll"
  9. android:gravity= "center_horizontal"
  10. android:layout_alignBottom= "@id/vp"
  11. android:orientation= "horizontal"
  12. > </LinearLayout>


 

猜你喜欢

转载自blog.csdn.net/weixin_44293974/article/details/86548824