MainActivity.java

思想:才用非常大的数 让其看起来可以循环轮播图片并且用户可以从尽头滑到首图的特点 、

  1. package com.qf.day20_viewpager_demo4;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.app.Activity;
  7. import android.support.v4.view.PagerAdapter;
  8. import android.support.v4.view.ViewPager;
  9. import android.view.Menu;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.ImageView;
  13. public class MainActivity extends Activity {
  14. private ViewPager viewPager;
  15. private int[] imags = {R.drawable.image1,R.drawable.image2,R.drawable.image3};
  16. private List<ImageView> list;
  17. private Handler handler = new Handler(){
  18. public void handleMessage(android.os.Message msg) {
  19. viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
  20. handler.sendEmptyMessageDelayed(1, 2000);
  21. };
  22. };
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. viewPager = (ViewPager) findViewById(R.id.viewPager);
  28. //数据源
  29. list = new ArrayList<ImageView>();
  30. if(imags.length<4){
  31. for(int i=0;i<imags.length*4;i++){
  32. ImageView imageView = new ImageView(getApplicationContext());
  33. imageView.setImageResource(imags[i%imags.length]);
  34. list.add(imageView);
  35. }
  36. }else{
  37. for(int i=0;i<imags.length;i++){
  38. ImageView imageView = new ImageView(getApplicationContext());
  39. imageView.setImageResource(imags[i]);
  40. list.add(imageView);
  41. }
  42. }
  43. //adapter
  44. viewPager.setAdapter(new MyAdapter());
  45. //让程序默认展示第一条数据
  46. viewPager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%list.size());
  47. //使用Handler发送消息
  48. handler.sendEmptyMessageDelayed(1, 2000);
  49. //自动轮播
  50. // new Thread(){
  51. // public void run() {
  52. // while(true){
  53. // try {
  54. // Thread.sleep(2000);
  55. // } catch (InterruptedException e) {
  56. // // TODO Auto-generated catch block
  57. // e.printStackTrace();
  58. // }
  59. // runOnUiThread(new Runnable() {
  60. //
  61. // @Override
  62. // public void run() {
  63. // // 方式一
  64. //// int pos = viewPager.getCurrentItem();
  65. //// if(pos == imags.length-1){
  66. //// viewPager.setCurrentItem(0,false);
  67. //// }else{
  68. //// viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
  69. //// }
  70. //
  71. //
  72. // viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
  73. // }
  74. // });
  75. // }
  76. // };
  77. // }.start();
  78. }
  79. public class MyAdapter extends PagerAdapter{
  80. @Override
  81. public int getCount() {
  82. // TODO Auto-generated method stub
  83. return Integer.MAX_VALUE;//设置一个最大值
  84. }
  85. @Override
  86. public Object instantiateItem(ViewGroup container, int position) {
  87. // TODO Auto-generated method stub
  88. container.addView(list.get(position%list.size()));
  89. return list.get(position%list.size());
  90. }
  91. @Override
  92. public void destroyItem(ViewGroup container, int position, Object object) {
  93. // TODO Auto-generated method stub
  94. // super.destroyItem(container, position, object);
  95. container.removeView(list.get(position%list.size()));
  96. }
  97. @Override
  98. public boolean isViewFromObject(View arg0, Object arg1) {
  99. // TODO Auto-generated method stub
  100. return arg0 == arg1;
  101. }
  102. }
  103. }

布局文件

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10. <android.support.v4.view.ViewPager
  11. android:id="@+id/viewPager"
  12. android:layout_width="match_parent"
  13. android:layout_height="match_parent"
  14. />
  15. </RelativeLayout>

20 ViewPager Demo4自动轮播的更多相关文章

  1. 使用ViewPager实现自动轮播

    很多APP中都实现了类似引导页的自动轮播,不由得想到昨天的引导页上修改一下代码实现轮播. 其实大体上只需要添加一个线程循环执行就可以了. 项目已同步至:https://github.com/nanch ...

  2. Viewpager图片自动轮播,网络图片加载,图片自动刷新

    package com.teffy.viewpager; import java.util.ArrayList; import java.util.concurrent.Executors; impo ...

  3. 20 ViewPager总结

    V4:兼容到1.6,V7:兼容到 2.1,V13:兼容到3.2(平板) 兼容包 ViewPager 父类: android.support.v4.view.ViewPager ViewPager:滑动 ...

  4. ViewPager自动轮播

    Android使用ViewPager实现左右循环滑动及轮播效果   ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候 ...

  5. 仿网易新闻 ViewPager 实现图片自动轮播

    新闻 App 首页最上方一般会循环播放热点图片,如下图所示. 本文主要介绍了利用 ViewPager 实现轮播图片,图片下方加上小圆点指示器标记当前位置,并利用 Timer+Handler 实现了自动 ...

  6. viewpager循环滚动和自动轮播的问题

    ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的Vie ...

  7. ViewPager实现广告自动轮播核心代码(Handler+Thread)

    ViewPager数据源是4个线性布局,每个布局里面充满一张高度固定.宽度充满父布局的图片.有4个小圆点跟随ViewPager滑动.轮播原本我是用Timer+TimerTask的,但是问题颇多,很是郁 ...

  8. Android ViewPager PagerAdapter 图片轮播

    ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的View类. ViewPager类需要一个PagerAdapter适配器类给它提供数据. ViewPager ...

  9. android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据

    public class SlideShowAdView extends FrameLayout { //轮播图图片数量    private static int IMAGE_COUNT = 3;  ...

随机推荐

  1. hdu3567 八数码(搜索)--预处理

    题意:为你两个状态,求a到b 的最小路径,要求字典序最小. 思路: 最开始想的是目标状态是变化的,所以打表应该不行,然后直接上A*,但是TLE了- -(瞬间无语) 然后看了下别人的思路,预处理出9个状 ...

  2. What's New In MySQL 8.0

        由于8.0内有很多C++11特性.需要gcc4.8版本以上.Rhel6系列默认gcc是4.7.在安装gcc6.1之后仍然检查不过. 原因可能是6.1版本不一定高于4.7,暂不讨论.鉴于升级gc ...

  3. 浅谈JAVA8引入的接口默认方法

    参考 http://blog.csdn.net/wanghao_0206/article/details/52712736 public interface InterfaceTest { publi ...

  4. JsonArray转List,list转json字符串

    JsonArray data = object.getAsJsonArray("data"); Gson gson =new Gson(); List<Object> ...

  5. 实现一个ordeeddict

    class MyOrderdict(): def __init__(self, mydict): self._cur = 0 self._mykeys = [] self._myvalues = [] ...

  6. Java finalize方法使用

    <JAVA编程思想>: Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize(). (1).对象不一定会被回收. (2).垃圾回收不是析构函数. ( ...

  7. vuex存储和本地存储(localstorage、sessionstorage)的区别

    1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地 2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值. 3.永久性:当 ...

  8. 独立游戏《Purgatory Ashes》的经验与总结

    1.引子 游戏的灵感萌生于2015年,当时只有一些概念性的设计图. 后来我利用资源商店的素材搭建了最早的原型. 游戏的最终画面: 早期以D.P作为代号进行开发,来源于两个单词的缩写 Devil Pro ...

  9. leetcode刷题笔记231 2的幂

    题目描述: 给定一个整数,写一个函数来判断它是否是2的幂. 题目分析: 判断一个整数是不是2的幂,可根据二进制来分析.2的幂如2,4,8,等有一个特点: 二进制数首位为1,其他位为0,如2为10,4为 ...

  10. 当我们在谈论JMM(Java memory model)的时候,我们在谈论些什么

    前面几篇中,我们谈论了synchronized.final以及voilate的用法和底层实现,都绕不开一个话题-Java内存模型(java memory model,简称JMM).Java内存模型是保 ...