// 初始化每个页面的数据 private void initPageView(LinearLayout root, int i) { DayBean bean = data.getContent().get(i); int layoutIndex = lastDayTime != bean.getTime() ? 0 : (bean.getSrc().length == 1 ? 1 : 2); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ScreenUtils.getScreenW(), ScreenUtils.getScreenH()); View v = View.inflate(getContext(), layoutIds[layoutIndex], null); v.setLayoutParams(params); if (layoutIndex == 0) { initItem1(v, bean); lastDayTime = bean.getTime(); nowDay++; root.addView(v); pageViews.add(new PageView(v, pageSum, bean, true)); pageSum++; // 如果是日期页面,则继续加载 params = new LinearLayout.LayoutParams(ScreenUtils.getScreenW(), ScreenUtils.getScreenH()); layoutIndex = (bean.getSrc().length == 1 ? 1 : 2); v = View.inflate(getContext(), layoutIds[layoutIndex], null); v.setLayoutParams(params); } if (layoutIndex == 1) { initItem2(v, bean); } else { initItem3(v, bean); } root.addView(v); pageViews.add(new PageView(v, pageSum, bean, false)); pageSum++; }
// 滚动停止 ,重置view private void resetView() { int dis = getScrollX() % ScreenUtils.getScreenW(); if (Math.abs(dis) >= ScreenUtils.getScreenW() / 2) { distance = ScreenUtils.getScreenW() - dis; } else { distance = dis * -1; } handler.sendEmptyMessageDelayed(autoScroll, SpaceTime); }
@Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case -10086: if (lastX == getScrollX()) { resetView(); } else { if (Math.abs(getScrollX() - lastX) <= MINSPEED) { stopScroll(); } else { handler.sendMessageDelayed(handler.obtainMessage(ViewScrollTag), SpaceTime); } lastX = getScrollX(); } break; case 1: // 自动滚动 int add = distance > 0 ? 1 : -1; if (Math.abs(distance) > speed) { scrollTo(speed * add + getScrollX(), 0); sendEmptyMessageDelayed(autoScroll, SpaceTime); distance -= speed * add; } else { scrollTo(distance * add + getScrollX(), 0); distance = 0; nowPage = getScrollX() / ScreenUtils.getScreenW(); Log.e(TAG, nowPage + ""); if (onPageSelectItem != null) { onPageSelectItem.onSelect(pageViews.get(nowPage)); } } break; } }