轮播图已经出来很长时间了,我也看了很多博客,看了很多的人代码,也有自己写原生的,也有用第三方框架的,学习安卓有一段时间了,决定写一写博客来记录自己的安卓学习生涯,不管以前有没有古人写过,反正我是这个来者哈哈哈;废话不多说了,进入正文吧。
Banner的简单使用步骤:
第一步 添加依赖:
compile 'com.youth.banner:banner:1.4.9'
第二步 网络权限:
//如果你的图片源是从网络来的,那你就添加个网络权限。
<uses-permission android:name="android.permission.INTERNET" />
//要记得读取权限也不可少哦
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
第三步 在布局文件中添加banner组件:
//当然宽高可以自己设置。这里只是举个栗子
<com.youth.banner.Banner
android:id="@+id/main_banner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
第四步 重写图片加载器:
//我个人习惯用Glide,所以用Glide写的,当然大家如果喜欢其他的可以用其他的,我在这里不做任何局限
import android.content.Context;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.youth.banner.loader.ImageLoader;
public class GlideImageLoader extends ImageLoader {
@Override
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:
该有的配置完了,就该真正的使用啦!等了很久了吧。
public class MainActivity extends Activity {
Banner banner;//banner组件
List mlist;//图片资源
List<String> mlist1;//轮播标题
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化两个集合,图片资源可以是本地,也可以是网络的url
mlist = new ArrayList<>();
mlist.add(R.drawable.bingxue);
mlist.add(R.drawable.fpcard);
mlist.add(R.drawable.gggg);
mlist.add(R.drawable.peng);
mlist1 = new ArrayList<>();
mlist1.add("123231");
mlist1.add("123231");
mlist1.add("123231");
mlist1.add("123231");
banner = findViewById(R.id.main_banner);
banner.setImageLoader(new GlideImageLoader()); //设置图片加载器
banner.setImages(mlist);//设置图片源
banner.setBannerTitles(mlist1);//设置标题源
banner.setDelayTime(1500);//设置轮播事件,单位毫秒
banner.setBannerAnimation(Transformer.Stack);//设置轮播动画,动画种类很多,有兴趣的去试试吧,我在这里用的是默认
/**
* 轮播图的点击事件
*/
banner.setOnBannerListener(new OnBannerListener() {
@Override
public void OnBannerClick(int position) {
Toast.makeText(MainActivity.this, "xiaoguo" + position, Toast.LENGTH_SHORT).show();
}
});
banner.setIndicatorGravity(BannerConfig.CENTER);//设置指示器的位置
banner.start();//开始轮播,一定要调用此方法。
}
第六步 为了增强用户的体验:
@Override
protected void onResume() {
super.onResume();
banner.start();
}
@Override
protected void onStop() {
super.onStop();
banner.stopAutoPlay();
}
Banner的简单实现就说到这里,很简单,但是很强大,也很实用,可以满足一般的轮播需求。谢谢!