admin
2021-04-02 545ce4665c1d506393908b55aafd681a45c774e6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.lzj.gallery.library.adapter;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
 
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.lcjian.library.widget.RatioLayout;
import com.lzj.gallery.library.R;
 
import java.util.List;
 
import androidx.viewpager.widget.PagerAdapter;
 
/**
 * Created by Administrator on 2018/11/28.
 * banner的适配器
 */
 
public class BannerPagerAdapter extends PagerAdapter {
    private List<String> mList;
    private Context mContext;
    private int defaultImg = R.mipmap.ic_banner_error;//默认图片
    private int mRoundCorners = -1;
    private int mMaxNumber;//最大banner数
    private Float imgRatio;
 
    /**
     * 默认
     *
     * @param defaultImg
     */
    public void setDefaultImg(int defaultImg) {
        this.defaultImg = defaultImg;
    }
 
    /**
     * 设置圆角
     *
     * @param mRoundCorners
     */
    public void setmRoundCorners(int mRoundCorners) {
        this.mRoundCorners = mRoundCorners;
    }
 
    /**
     * 点击回调
     */
    public interface OnClickImagesListener {
        void onImagesClick(int position);
    }
 
    private OnClickImagesListener mImagesListener;
 
    public void setOnClickImagesListener(OnClickImagesListener listener) {
        mImagesListener = listener;
 
    }
 
    public BannerPagerAdapter(List<String> list, Context context, Float imgRatio) {
        // this.mList = list;
        this.imgRatio = imgRatio;
        this.mContext = context;
        if (mList == null) {
            mList = list;
        }
        if (list.size() > 9) {
            this.mMaxNumber = 9;
        } else {
            this.mMaxNumber = list.size();
        }
    }
 
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }
 
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
 
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
 
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.banner_img_layout, container, false);
        ImageView imageView = view.findViewById(R.id.img);
        RatioLayout rl = view.findViewById(R.id.rl_img);
        if (imgRatio != null)
            rl.setRatio(imgRatio);
 
        final int index = position % mMaxNumber;
        LoadImage(mList.get(index), imageView);
        //OnClick
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mImagesListener.onImagesClick(index);
            }
        });
 
        container.addView(view);
        return view;
    }
 
    /**
     * 加载图片
     */
    public void LoadImage(String url, ImageView imageview) {
        if (mRoundCorners == -1) {
            Glide.with(mContext)
                    .load(url)
//                    .centerCrop()
                    .dontAnimate()
                    .placeholder(defaultImg)// 加载中图片
                    .error(defaultImg) // 加载失败图片
                    .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)//设置磁盘缓存
                    .into(imageview);
        } else {
            Glide.with(mContext)
                    .load(url)
                    .centerCrop()
                    .dontAnimate()
                    .placeholder(defaultImg)// 加载中图片
                    .error(defaultImg) // 加载失败图片
                    .transform(new RoundedCorners(mRoundCorners)) //
                    .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)//设置磁盘缓存
                    .into(imageview);
        }
    }
 
 
}