看效果图:
GitHub 下载地址:https://github.com/wuqingsen/ImageCarousel
先看工具类 ImageCycleViewAppAdsFindSellerNew 中的代码,这里面写入了主要逻辑:
/**
* author: wu
* date: on 2018/12/18.
* describe:广告图片自动轮播控件
*/
public class ImageCycleViewAppAdsFindSellerNew extends LinearLayout {
/**
* 上下文
*/
private Context mContext;
/**
* 图片轮播视图
*/
private CycleViewPager mBannerPager = null;
/**
* 滚动图片视图适配器
*/
private ImageCycleAdapter mAdvAdapter;
/**
* 图片轮播指示器控件
*/
private ViewGroup mGroup;
/**
* 图片轮播指示器-个图
*/
private ImageView mImageView = null;
/**
* 滚动图片指示器-视图列表
*/
private ImageView[] mImageViews = null;
/**
* 图片滚动当前图片下标
*/
private int mImageIndex = 1;
/**
* 手机密度
*/
private float mScale;
/**
* 轮播图时间
*/
private int delayMillis = 3000;
/**
* @param context
*/
public ImageCycleViewAppAdsFindSellerNew(Context context) {
super(context);
}
/**
* @param context
* @param attrs
*/
public ImageCycleViewAppAdsFindSellerNew(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
mScale = context.getResources().getDisplayMetrics().density;
LayoutInflater.from(context)
.inflate(R.layout.view_banner_ads_content_findseller, this);
mBannerPager = findViewById(R.id.pager_banner);
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);
}
/**
* 装填图片数据
*/
public void setImageResources(List<String> ad_list,
ImageCycleViewListener imageCycleViewListener) {
// 清除所有子视图
mGroup.removeAllViews();
// 图片广告数量
final int imageCount = ad_list.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);
LayoutParams layout = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layout.setMargins(5, 0, 0, 0);
mImageView.setLayoutParams(layout);
// mImageView.setPadding(imagePadding, imagePadding, imagePadding,
// imagePadding);
mImag