安卓开发笔记(三十二):banner轮播图的实现
程序员文章站
2022-04-09 18:24:26
一.activity.xml 我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间。 二.添加相关的库以及网络权限 三.activity.java 四.网络图片加载的新类 代码一共就这些,全部 ......
一.activity.xml
我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间。
<?xml version="1.0" encoding="utf-8"?> <linearlayout 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:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity"> <scrollview android:layout_width="match_parent" android:layout_height="match_parent"> <linearlayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.youth.banner.banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="170dp" /> </linearlayout> </scrollview> </linearlayout>
二.添加相关的库以及网络权限
<uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.read_external_storage" />
implementation'com.youth.banner:banner:1.4.10' implementation "com.github.bumptech.glide:glide:4.6.1"
三.activity.java
import android.support.v7.app.actionbar; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.widget.imageview; import android.widget.toast; import com.bumptech.glide.glide; import com.youth.banner.banner; import com.youth.banner.bannerconfig; import com.youth.banner.transformer; import com.youth.banner.listener.onbannerlistener; import com.youth.banner.loader.imageloader; import java.util.arraylist; import java.util.list; public class mainactivity extends appcompatactivity { banner banner;//banner组件 list mlist;//图片资源 list<string> mlist1;//轮播标题 @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); actionbar actionbar=getsupportactionbar(); if(actionbar !=null) { actionbar.hide(); } mlist = new arraylist<>(); mlist.add("http://pic0.iqiyipic.com/common/lego/20190504/5c7c889174894cd7aed96218320e1945.jpg"); mlist.add("http://pic3.iqiyipic.com/common/lego/20190504/902898f2117c41ccaea5fa36eb4d0545.jpg"); mlist.add("http://pic3.iqiyipic.com/common/lego/20190504/8245013abf2b44ce8736d7435d4567dc.jpg"); mlist.add("http://pic2.iqiyipic.com/common/lego/20190501/9cdcc1a900a34c1497aeff9c5af610f2.jpg"); mlist1 = new arraylist<>(); mlist1.add("这是一个美好的早晨"); mlist1.add("但我们并不美好"); mlist1.add("因为我是学人工智能的"); mlist1.add("已经被学金融的虐得头破血流"); banner = findviewbyid(r.id.banner); banner.setimageloader(new glideimageloader()); //设置图片加载器 banner.setimages(mlist);//设置图片源 banner.setbannertitles(mlist1);//设置标题源 banner.setdelaytime(2000);//设置轮播事件,单位毫秒 banner.setbanneranimation(transformer.zoomoutslide);//设置轮播动画,动画种类很多,有兴趣的去试试吧,我在这里用的是默认 //stack /** * 轮播图的点击事件 */ banner.setonbannerlistener(new onbannerlistener() { @override public void onbannerclick(int position) { toast.maketext(mainactivity.this, "这是第" + position +"个效果", toast.length_short).show(); } }); banner.setindicatorgravity(bannerconfig.center);//设置指示器的位置 banner.start();//开始轮播,一定要调用此方法。 } //下面的代码可写可不写,用于提升控件的加载效率 protected void onresume() { super.onresume(); banner.start(); } @override protected void onstop() { super.onstop(); banner.stopautoplay(); } }
四.网络图片加载的新类
import android.content.context; import android.widget.imageview; import com.bumptech.glide.glide; import com.youth.banner.loader.imageloader; public class glideimageloader extends imageloader { public void displayimage(context context, object path, imageview imageview) { glide.with(context).load(path).into(imageview); } @override public imageview createimageview(context context) { imageview imageview = new imageview(context); return imageview; } }
代码一共就这些,全部照抄不误就可以得到我们的banner效果了,十分简单。