ViewPager --轮播以及左右滑动

    xiaoxiao2021-09-12  106

    这一个轮播效果是在fragment里面的 适配器:

    package com.chen.mycar.adapter; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.ImageView; import java.util.List; /** * 首页头部轮播的适配器 */ public class MyBannerPagerAdapter extends PagerAdapter { private List<ImageView> listImages; public MyBannerPagerAdapter(List<ImageView> listImages) { this.listImages = listImages; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { //对ViewPager页号求模取出View列表中要显示的项 position %= listImages.size(); if (position < 0) { position = listImages.size() + position; } ImageView view = listImages.get(position); //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。 ViewParent vp = view.getParent(); if (vp != null) { ViewGroup parent = (ViewGroup) vp; parent.removeView(view); } container.addView(view); //add listeners here if necessary return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // super.destroyItem(container, position, object); // container.removeView(listImages.get(position%listImages.size())); } } //设置头部轮播集合 private List<ImageView> list = null; private LinearLayout linearLayout; private int[] resId = new int[]{R.mipmap.xcar, R.mipmap.xcar2, R.mipmap.xcar3}; private MyBannerPagerAdapter myBannerPagerAdapter; private ViewPager viewPager; //因为我们需求是 定时轮播 所以用handler private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(viewPager.getCurrentItem()+1); handler.sendEmptyMessageDelayed(0,2000); super.handleMessage(msg); } }; //头部轮播的方法 private void addHeaderShow() { list = new ArrayList<ImageView>(); for (int i = 0; i < resId.length; i++) { ImageView imageView = new ImageView(getContext()); imageView.setImageResource(resId[i]); imageView.setScaleType(ImageView.ScaleType.FIT_XY); list.add(imageView); } myBannerPagerAdapter = new MyBannerPagerAdapter(list); viewPager.setAdapter(myBannerPagerAdapter); viewPager.setCurrentItem(Integer.MAX_VALUE/2); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int arg0) { for (int i = 0; i < linearLayout.getChildCount(); i++) { linearLayout.getChildAt(i).setSelected(false); } linearLayout.getChildAt(arg0%3).setSelected(true); } @Override public void onPageScrollStateChanged(int arg0) { } }); } //fragment 里面是不可以给控件设置 onClick 属性的 @Override public void onResume() { super.onResume(); handler.sendEmptyMessageDelayed(0,2000); } @Override public void onStop() { super.onStop(); handler.removeMessages(0); }
    转载请注明原文地址: https://ju.6miu.com/read-677570.html

    最新回复(0)