依赖包:
implementation 'com.youth.banner:banner:1.4.10'
或
compile 'com.youth.banner:banner:1.4.10'
XML:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--
<-指示器的大小->
app:indicator_width="8dp"
app:indicator_height="8dp"
<-选中的颜色-->
app:indicator_drawable_selected="@drawable/shape02"
app:indicator_drawable_unselected="@drawable/shape01"
-->
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="0dp"
android:layout_height="250dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:indicator_width="8dp"
app:indicator_height="8dp"
app:indicator_drawable_selected="@drawable/shape02"
app:indicator_drawable_unselected="@drawable/shape01"
></com.youth.banner.Banner>
</android.support.constraint.ConstraintLayout>
drawable文件夹下的xml:
shape01.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
>
<size
android:width="8dp"
android:height="8dp"
/>
<solid
android:color="#909090"
/>
</shape>
shape02.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
>
<size
android:width="8dp"
android:height="8dp"
/>
<solid
android:color="#900000"
/>
</shape>
Activity:
private String lujing="https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1";
private Banner banner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
banner = findViewById(R.id.banner);
//设置banner的样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
//设置图片加载器
banner.setImageLoader(new ImageLoaderInterface<ImageView>() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Bean.Newslist news= (Bean.Newslist) path;
ImageLoader.getInstance().displayImage(news.getPicUrl(),imageView);
}
@Override
public ImageView createImageView(Context context) {
ImageView imageView=new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
});
initData();
}
private void initData() {
NetUtil.yibu(lujing, Bean.class, new NetUtil.CallBack<Bean>() {
@Override
public void getdata(Bean o) {
//设置图片集合
banner.setImages(o.getNewslist());
//设置标题
banner.setBannerTitles(initdots(o));
//banner设置方法全部调用完毕时最后调用
banner.start();
}
});
}
private List<String> initdots(Bean o) {
List<String> list=new ArrayList<>();
for(Bean.Newslist cc:o.getNewslist()){
list.add(cc.getTitle());
}
return list;
}
Bean类:
public class Bean {
public int code;
public final int PAN=200;
public List<Newslist> newslist;
public int getCode() {
return code;
}
public List<Newslist> getNewslist() {
return newslist;
}
public boolean ispanduan(){
return code==PAN;
}
class Newslist{
public String picUrl;
public String title;
public String getPicUrl() {
return picUrl;
}
public String getTitle() {
return title;
}
}
}
App:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this)
.memoryCacheSizePercentage(10)
.diskCacheSize(20*1024*1024)
.defaultDisplayImageOptions(new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.build())
.build());
}
}
NetUtil工具类:
//接口回调
public interface CallBack<T>{
void getdata(T t);
}
//异步执行
public static void yibu(String lujing, final Class clazz, final CallBack callBack){
new AsyncTask<String, Void, Object>() {
@Override
protected Object doInBackground(String... strings) {
return NetUtil.jiexi(strings[0],clazz);
}
@Override
protected void onPostExecute(Object o) {
callBack.getdata(o);
}
}.execute(lujing);
}
//网络解析
public static <T> 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();
}