Banner的图片的指示器和标题

在这里插入图片描述

依赖的导入
implementation ‘com.youth.banner:banner:1.4.10’

Xml




MainActivity

private Banner banner;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);banner=findViewById(R.id.banner);banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);banner.setImageLoader(new ImageLoaderInterface() {@Overridepublic void displayImage(Context context, Object path, ImageView imageView) {BannerResponse.Banner banner= (BannerResponse.Banner) path;com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(banner.getPicUrl(),imageView);}@Overridepublic ImageView createImageView(Context context) {ImageView imageView = new ImageView(context);imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);return imageView;}});loadData();}private void loadData() {NetUtil.yibu("https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1", BannerResponse.class, new NetUtil.CallBack() {@Overridepublic void getdata(BannerResponse o) {//设置图片集合banner.setImages(o.getNewslist());banner.setBannerTitles(getTitles(o));//banner设置方法全部调用完毕时最后调用banner.start();}});
}private List getTitles(BannerResponse bannerResponse) {List result = new ArrayList<>();for (BannerResponse.Banner banner: bannerResponse.getNewslist()) {result.add(banner.getTitle());}return result;
}

Util

//接口public interface CallBack{void getdata(T t);}//异步任务public static void yibu(String lujing, final Class clazz, final CallBack callBack){new AsyncTask() {@Overrideprotected Object doInBackground(String... strings) {return NetUtil.jiexi(strings[0],clazz);}@Overrideprotected void onPostExecute(Object o) {callBack.getdata(o);}}.execute(lujing);
}
//网络解析
public static  T jiexi(String lujing,Class clazz){T t= (T) new Gson().fromJson(NetUtil.geturl(lujing),clazz);return t;
}
//网络请求
public static String geturl(String lujing){String result="";try {//定义地址URL url=new URL(lujing);//打开连接HttpURLConnection urlConnection= (HttpURLConnection) url.openConnection();//请求方法urlConnection.setRequestMethod("GET");//读取超时urlConnection.setReadTimeout(5000);//连接超时urlConnection.setConnectTimeout(5000);if (urlConnection.getResponseCode()==200){result = NetUtil.zifu(urlConnection.getInputStream());}} catch (Exception e) {e.printStackTrace();}return result;
}
//字节流转换为字符流
private static String zifu(InputStream inputStream) throws IOException {InputStreamReader inputStreamReader=new InputStreamReader(inputStream);BufferedReader buff=new BufferedReader(inputStreamReader);StringBuilder builder=new StringBuilder();for (String imp=buff.readLine();imp!=null;imp=buff.readLine()){builder.append(imp);}return builder.toString();
}

BannerAdapter

public class BannerAdapter extends PagerAdapter {private List mDatas;private Context context;public BannerAdapter(Context context) {this.context = context;mDatas = new ArrayList<>();
}@Override
public int getCount() {return mDatas.size() > 0 ? 5000 : 0;
}public BannerResponse.Banner getItem(int position) {return mDatas.get(position % mDatas.size());
}public void setDatas(List datas) {mDatas.clear();if (datas != null) {mDatas.addAll(datas);}notifyDataSetChanged();
}@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {return view == o;
}@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {ImageView imageView = new ImageView(context);imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);container.addView(imageView);ImageLoader.getInstance().displayImage(getItem(position).getPicUrl(), imageView);return imageView;
}@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView((View) object);
}

App全局配置

ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this).memoryCacheSizePercentage(10).discCacheSize(50 * 1024 * 1024).defaultDisplayImageOptions(new DisplayImageOptions.Builder().showImageOnFail(R.mipmap.ic_launcher).showImageOnLoading(R.mipmap.ic_launcher).cacheInMemory(true).cacheOnDisk(true).build()).build());}

BannerResponse

private int code;private String msg;private List newslist;private final int SUCCESS_CODE = 200;public boolean isSuccess() {return code == SUCCESS_CODE;
}public int getCode() {return code;
}public String getMsg() {return msg;
}public List getNewslist() {return newslist;
}public class Banner {private String title;private String picUrl;public String getTitle() {return title;}public String getPicUrl() {return picUrl;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部