本地图片的无限轮播++++Banner无限轮播

本地图片的无限轮播

(一)

//首先创建Integer类型的集合存放图片

private ArrayList<Integer> list = new ArrayList<>();

list.add(R.drawable.k);

list.add(R.drawable.p1);

list.add(R.drawable.p2);

list.add(R.drawable.p3);

(二)
//设置适配器
PagerAdapter adapter = new PagerAdapter(MainActivity.this, list); vp.setAdapter(adapter);

(adapter中 重写两个方法)

Context context;
List<Integer> list;

public BannerAdapter(Context context, List<Integer> list) {
    this.context = context;
    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 = new ImageView(context);
    imageView.setImageResource(list.get(position%list.size()));
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    container.addView(imageView);
    return imageView;
}
//方法二
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView((View) object);
}

(三)

//发送消息(每两秒换一次图片)----MainActivity中使用handler
handler.sendEmptyMessageDelayed(1,2000);

//handler轮播换图

private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) {

                    int currentItem = vp.getCurrentItem();

                    currentItem++; 

                    vp.setCurrentItem(currentItem);

                    sendEmptyMessageDelayed(1,2000);

        }

};

Banner网络地址无限轮播

(依赖)implementation 'com.youth.banner:banner:1.4.10'

(网络权限)

(全局配置app)

public class Appli extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        initLoader();
    }

    private void initLoader() {
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration
                .Builder(getApplicationContext())
                .defaultDisplayImageOptions(createOption())
                .build();
        ImageLoader.getInstance().init(configuration);
    }

    private DisplayImageOptions createOption() {
        DisplayImageOptions options = new DisplayImageOptions
                .Builder()
                .cacheInMemory(true)    // 开启内存缓存
                .cacheOnDisk(true)      // 开启存储卡缓存
                .build();
        return options;
    }
}

(布局)

<com.youth.banner.Banner
    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="160dp" />


(Activity)

public class BannerActivity extends AppCompatActivity {

    private Banner vp;
    //自定义的图片数组
    private List<String> imageUrls = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_banner);
        //初始化控件
        vp = findViewById(R.id.vp);
//固定的网络地址添加到集合中  -----可自定义   imageUrls.add("http://06.imgmini.eastday.com/mobile/20180807/20180807154459_88f8446a93c9389b3d32ec3628d32bc5_2_mwpm_03200403.jpg");
        imageUrls.add("http://06.imgmini.eastday.com/mobile/20180807/20180807154459_88f8446a93c9389b3d32ec3628d32bc5_4_mwpm_03200403.jpg");
        imageUrls.add("http://08.imgmini.eastday.com/mobile/20180807/20180807154329_0c22973c751e6ad07388e902a6f275b8_1_mwpm_03200403.jpg");

        vp.setImageLoader(new com.youth.banner.loader.ImageLoader() {
            @Override
            public void displayImage(Context context, Object path, ImageView imageView) {
                ImageLoader.getInstance().displayImage((String) path, imageView);
            }
        });
        vp.setImages(imageUrls);
        vp.setBannerAnimation(Transformer.Accordion);  //轮播的翻页动画
        vp.setBannerStyle(BannerConfig.NUM_INDICATOR);  // 轮播右下角的页码
        //轮播开始
        vp.start();
    }
}

猜你喜欢

转载自blog.csdn.net/H_BuilDer/article/details/81661864