/** * @param context * @param attrs */ public ImageCycleView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; mScale = context.getResources().getDisplayMetrics().density; LayoutInflater.from(context).inflate(R.layout.view_banner_content, this); mBannerPager = (CycleViewPager) findViewById(R.id.pager_banner); tv_ad_des = (TextView) findViewById(R.id.tv_ad_des); ll_beizhu = (LinearLayout) findViewById(R.id.ll_beizhu); mBannerPager.setOnPageChangeListener(new GuidePageChangeListener()); mBannerPager.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: // 开始图片滚动 startImageTimerTask(); break; default: // 停止图片滚动 stopImageTimerTask(); break; } return false; } }); // 滚动图片右下指示器视图 mGroup = (ViewGroup) findViewById(R.id.viewGroup); }
/** * 装填图片数据 * * @param imageUrlList * @param imageCycleViewListener */ public void setImageResources( ArrayList<FindBean> infoList, ImageCycleViewListener imageCycleViewListener) { // 清除所有子视图 mGroup.removeAllViews(); // 图片广告数量 final int imageCount = infoList.size(); mImageViews = new ImageView[imageCount]; for (int i = 0; i < imageCount; i++) { mImageView = new ImageView(mContext); int imageParams = (int) (mScale * 20 + 0.5f); // XP与DP转换,适应不同分辨率 int imagePadding = (int) (mScale * 5 + 0.5f); LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT); layout.setMargins(3, 0, 3, 0); mImageView.setLayoutParams(layout); // mImageView.setPadding(imagePadding, imagePadding, imagePadding, imagePadding); mImageViews[i] = mImageView; if (i == 0) { mImageViews[i].setBackgroundResource(R.drawable.icon_point_pre); } else { mImageViews[i].setBackgroundResource(R.drawable.icon_point); } mGroup.addView(mImageViews[i]); } mAdvAdapter = new ImageCycleAdapter(mContext, infoList, imageCycleViewListener); mBannerPager.setAdapter(mAdvAdapter); startImageTimerTask(); }
@Override public void run() { if (mImageViews != null) { // 下标等于图片列表长度说明已滚动到最后一张图片,重置下标 if ((++mImageIndex) == mImageViews.length + 1) { mImageIndex = 1; } mBannerPager.setCurrentItem(mImageIndex); } }