activity中
loadBanner();
private void loadBanner() {
//通过网络封装类获取到数据
NetUtils instance = NetUtils.getInstance();
instance.getDataFromServer(bannerApi);
instance.setCallback(this);
}
//请求成功后,图片都在一个接口中时
@Override
public void onSuccess(String result) {
//gson解析
Gson gson = new Gson();
BannerBean bannerBean = gson.fromJson(result, BannerBean.class);
//遍历数据添加图片
for (BannerBean.BodyBean.ResultBean resultBean : bannerBean.getBody().getResult()) {
ImageView imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage(resultBean.getBarnerPic(), imageView);
imageViews.add(imageView);//private List<ImageView> imageViews = new ArrayList<>();
}
//设置adapter
adapter = new BannerAdapter(imageViews);
buner.setAdapter(adapter);
//自动轮播
setBanner();
buner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
stopBanner();//点击的时候暂停轮播,具体方法如下
break;
case MotionEvent.ACTION_UP:
setBanner();//抬起是开始轮播,具体方法如下
break;
}
return false;
}
});
}
//开始轮播
private void setBanner() {
handler.sendEmptyMessageDelayed(1, 2000);
}
//暂停轮播
private void stopBanner() {
handler.removeCallbacksAndMessages(null );
}
适配器中(参数构造,四个重写)
private List<ImageView> list;
public BannerAdapter(List<ImageView> list) {
this.list = list;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = list.get(position % list.size());
ViewGroup parent = (ViewGroup) imageView.getParent();
if (parent != null) {
parent.removeView(imageView);
}
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}