国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android圖片無限輪播的實現(xiàn)代碼

2019-12-12 04:18:59
字體:
供稿:網(wǎng)友

本文實例為大家分享了AnAndroid圖片無限輪播的具體代碼,供大家參考,具體內(nèi)容如下

public class MainActivity extends Activity {  private ViewPager viewPager;  private LinearLayout ll_dot;   private String[] imageUrls = new String[] {  "http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg",   "http://pic2.nipic.com/20090424/1468853_230119053_2.jpg",   "http://img3.3lian.com/2013/s1/20/d/57.jpg",  "http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg",  "http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg" };  //private String[] imageUrls = new String[] {      //"http://192.168.230.1:8080/ab.jpg",      //"http://192.168.230.1:8080/ae.jpg",      //"http://192.168.230.1:8080/af.jpg",      //"http://192.168.230.1:8080/ah.jpg" };  private ArrayList<ImageView> viewList;  private ArrayList<ImageView> dotList;  Handler handler = new Handler() {    public void handleMessage(android.os.Message msg) {      // 先去獲取到當(dāng)前條目索引      int currentItem = viewPager.getCurrentItem();      // 條目索引+1      currentItem++;      // 重新設(shè)置給viewPager      viewPager.setCurrentItem(currentItem);      // 再調(diào)用發(fā)延時消息的方法      sendDelayMessage();    };  };  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    viewPager = (ViewPager) findViewById(R.id.viewPager);    ll_dot = (LinearLayout) findViewById(R.id.ll_dot);    // 初始化圖片    initViewList();    // 初始化小圓點    initDots();    // 設(shè)置數(shù)據(jù)適配器    viewPager.setAdapter(new MyPagerAdapter(this, viewList, handler));    // 設(shè)置初始的展示條目    viewPager.setCurrentItem(viewList.size() * 100000);    // 設(shè)置延時切換    sendDelayMessage();    // 監(jiān)聽viewPager的一個滑動事件    viewPager.setOnPageChangeListener(new OnPageChangeListener() {      @Override      public void onPageSelected(int position) {        // 遍歷小點的集合        for (int i = 0; i < dotList.size(); i++) {          // 如果當(dāng)前的索引值和i相等          if (position % dotList.size() == i) {            // 設(shè)置小點為亮色            dotList.get(i).setImageResource(R.drawable.dot_focuse);          } else {            // 否則暗色            dotList.get(i).setImageResource(R.drawable.dot_normal);          }        }      }      @Override      public void onPageScrolled(int arg0, float arg1, int arg2) {      }      @Override      public void onPageScrollStateChanged(int arg0) {      }    });  }  /**   * 發(fā)送延時消息   */  private void sendDelayMessage() {    handler.sendEmptyMessageDelayed(0, 2000);  }  private void initDots() {    // 創(chuàng)建一個裝小點控件的集合    dotList = new ArrayList<ImageView>();    dotList.clear();    for (int i = 0; i < imageUrls.length; i++) {      ImageView imageView = new ImageView(this);      if (i == 0) {        // 如果是第一張,默認(rèn)給一個亮的小點        imageView.setImageResource(R.drawable.dot_focuse);      } else {        // 如果不是滴一個,默認(rèn)給一個暗的小點        imageView.setImageResource(R.drawable.dot_normal);      }      // 設(shè)置小點的默認(rèn)寬高為20dp      LayoutParams params = new LayoutParams(20, 20);      // 設(shè)置小點的間距      params.setMargins(5, 0, 5, 0);      ll_dot.addView(imageView, params);      // 往小點集合中添加view      dotList.add(imageView);    }  }  private void initViewList() {    // 先使用xutils的工具類    BitmapUtils bitmapUtils = new BitmapUtils(this);    viewList = new ArrayList<ImageView>();    for (int i = 0; i < imageUrls.length; i++) {      // 創(chuàng)建imageView 并通過工具類將圖片設(shè)置到控件上      ImageView imageView = new ImageView(this);      bitmapUtils.display(imageView, imageUrls[i]);      viewList.add(imageView);    }  }}

適配器

public class MyPagerAdapter extends PagerAdapter {  private List<ImageView> viewList;  private Context context;  private Handler handler;  public MyPagerAdapter(Context context, List<ImageView> viewList,      Handler handler) {    this.context = context;    this.viewList = viewList;    this.handler = handler;  }  @Override  public int getCount() {    return Integer.MAX_VALUE;  }  @Override  public boolean isViewFromObject(View arg0, Object arg1) {    return arg0 == arg1;  }  @Override  public Object instantiateItem(ViewGroup container, int position) {    // 通過控件集合獲取imageView 添加到容器中,并作為key 返回    ImageView imageView = viewList.get(position % viewList.size());    imageView.setOnTouchListener(new OnTouchListener() {      @Override      public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()) {        // 當(dāng)按下的時候,停止輪播        case MotionEvent.ACTION_DOWN:          // 移除所有的回調(diào)和消息          handler.removeCallbacksAndMessages(null);          break;        // 抬起        case MotionEvent.ACTION_UP:          handler.sendEmptyMessageDelayed(0, 2000);          break;        // 取消的時候,繼續(xù)開始錄播        case MotionEvent.ACTION_CANCEL:          handler.sendEmptyMessageDelayed(0, 2000);          break;        default:          break;        }        //觸摸事件不被消費,true 消費該觸摸事件        return true;      }    });    container.addView(imageView);    return imageView;  }  @Override  public void destroyItem(ViewGroup container, int position, Object object) {    // super.destroyItem(container, position, object);    container.removeView((View) object);  }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 太仆寺旗| 新郑市| 乐昌市| 杭锦后旗| 静宁县| 望江县| 湟源县| 富源县| 新密市| 平江县| 上犹县| 望都县| 太和县| 宣化县| 尚义县| 化德县| 合肥市| 新晃| 武山县| 定结县| 观塘区| 洪湖市| 疏勒县| 镇坪县| 郓城县| 铜川市| 和平县| 巴彦淖尔市| 汉川市| 靖安县| 涟水县| 黄平县| 樟树市| 安丘市| 象山县| 长丰县| 马公市| 卫辉市| 蒙阴县| 洛隆县| 藁城市|