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