本地图片的无限轮播
(一)
//首先创建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(); } }