首先声明:
1,关于自定义的slideShowVeiw控件不是我的原创,我也不会原创,至于是哪位大神的我也不清楚,现在在这里小弟先谢谢您!
2,因为项目中要使用焦点图翻转,通常都要实现对应图片的监听事件,我拿到这个slideShowVeiw控件后,自己不会写对应的图片监听,百度了几天也没结果,最后还在控件的适配器中通过position来对图片监听,结果可想而知,点击一次焦点图,然后焦点图每翻转一次,下面的几张图片不用点了,因为他自己就激发了点击事件,原因我估计是翻转的时候position在切换,所以事件就激发了,在这里我也不知道用激发这个字准不准确,自己理解的。
3,slideShowVeiw控件没有用来监听图片翻转的监听器,我不知道,即使有我也看不懂,通常。。。算了我编不下去,直接上我实现图片监听的代码!
/**
* ViewPager实现的轮播图广告自定义视图,如京东首页的广告轮播图效果;
* 既支持自动轮播页面也支持手势滑动切换页面
*
*
*/
public class SlideShowView111 extends FrameLayout implements View.OnClickListener {
/*自定义的焦点图添加Item监听事件,思路写个接口,创建回调方法*/
/*
* 步骤: 1 写个接口 该接口声明一个onClick方法
* 2对外爆出一个监听的调用的方法
*
*
* */
// 使用universal-image-loader插件读取网络图片,需要工程导入universal-image-loader-1.8.6-with-sources.jar
// private ImageLoader imageLoader = ImageLoader.getInstance();
// private BitmapUtils bitmapUtils;
//轮播图图片数量
private final static int IMAGE_COUNT = 4;
//自动轮播的时间间隔
private final static int TIME_INTERVAL = 5;
//自动轮播启用开关
private final static boolean isAutoPlay = false;
//跳转监听器
private OnClickListener goListener;
//自定义轮播图的资源
private String[] imageUrls;
// private int[] imageSrcs;
//放轮播图片的ImageView 的list
private List<ImageView> imageViewsList;
//放圆点的View的list
private List<View> dotViewsList;
private ViewPager viewPager;
//当前轮播页
private int currentItem = 0;
//定时任务
private ScheduledExecutorService scheduledExecutorService;
private Context context;
//Handler
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
viewPager.setCurrentItem(currentItem);
}
};
public SlideShowView111(Context context) {
this(context,null);
}
public SlideShowView111(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public SlideShowView111(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (!isInEditMode()) {
this.context = context;
initData();
// 一步任务获取图片
new GetListTask().execute("");
if(isAutoPlay){
startPlay();
}
}
}
/**
* 开始轮播图切换
*/
public void startPlay(){
if (scheduledExecutorService==null) {
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleAtFixedRate(new SlideShowTask(), 4, 4, TimeUnit.SECONDS);
}
}
/**
* 停止轮播图切换
*/
private void stopPlay(){
scheduledExecutorService.shutdown();
}
/**
* 初始化相关Data
*/
private void initData(){
imageViewsList = new ArrayList<ImageView>();
dotViewsList = new ArrayList<View>();
}
@Override
public void onClick(View v) {
int a=v.getId();
switch (a){
case -1:
Toast.makeText(getContext(),"你摸了1",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(getContext(),"你摸了2",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(getContext(),"你摸了3",To