private List<Bean.DataBean> list; private ViewPager viewPager; private LinearLayout ll_buttom; private MyHandler2 myHandler2; public AutoBanner(Context context) { this(context, null); } public AutoBanner(Context context, AttributeSet attrs) { this(context, attrs, 0); } public AutoBanner(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); //将布局会知道控件 View view = LayoutInflater.from(context).inflate(R.layout.myviewpager, this, true); viewPager = view.findViewById(R.id.viewpager); ll_buttom = view.findViewById(R.id.ll_buttom); } //将适配器给ViewPager public void setMyAdapter(Context context, List<Bean.DataBean> list) { MyAdapter myAdapter = new MyAdapter(context, list); viewPager.setAdapter(myAdapter); final ArrayList<ImageView> points = new ArrayList<>(); //将指示器添加进去 for (int i = 0; i < list.size(); i++) { ImageView point = new ImageView(context); point.setBackgroundResource(R.drawable.pointer_selector); points.add(point); //放入下面的额线性布局 ll_buttom.addView(point); } //默认第一个店选中 points.get(0).setSelected(true); //绑定viewpager的滑动时间 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { position = position % points.size(); for (int i = 0; i < points.size(); i++) { if (i == position) { points.get(position).setSelected(true); } else { points.get(i).setSelected(false); } } } @Override public void onPageScrollStateChanged(int state) { } }); //设置当前页是中间的某个页面 viewPager.setCurrentItem(Integer.MAX_VALUE / 2); //设置自动轮播 myHandler2 = new MyHandler2(); autoPlay(); } private void autoPlay() { myHandler2.sendEmptyMessageDelayed(0, 1000); } class MyAdapter extends PagerAdapter { private final Context context; private final List<Bean.DataBean> list; public MyAdapter(Context context, List<Bean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { if (list == null) { return 0; } return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { position = position % list.size(); ImageView imageView = new ImageView(context); //使用Glide加载图片 Glide.with(context).load(list.get(position).getIcon()).into(imageView); //加入容器 container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } class MyHandler2 extends Handler { @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); myHandler2.sendEmptyMessageDelayed(0, 1000); } }
自定义view
最新推荐文章于 2022-08-08 20:10:34 发布