Android中实现自动轮播的框架(Banner)的介绍以及使用
16lz
2021-01-26
Banner是一个框架,此框架是用于实现在Android中,ViewPager的图片无限轮播功能。
在使用Banner框架时我们需要添加它的远程依赖:compile 'com.youth.banner:banner:1.4.9' //最新版本,即可使用。
Xml代码:
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.bannerdemo.MainActivity"> <com.youth.banner.Banner android:id="@+id/banner" android:layout_width="wrap_content" android:layout_height="wrap_content">com.youth.banner.Banner>LinearLayout>
MainActivity代码:
package com.example.bannerdemo;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;import com.google.gson.Gson;import com.youth.banner.Banner;import com.youth.banner.listener.OnBannerListener;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { // 图片网址 private String url = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; private Banner banner; // 此集合用于封装图片路径 private ArrayListlist = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化Banner控件 banner = (Banner) findViewById(R.id.banner); // 此方法用于获取网络资源,并设置给Banner实现图片自动轮播 initdata(); //Banner的图片点击事件 banner.setOnBannerListener(new OnBannerListener() { @Override public void OnBannerClick(int position) { Toast.makeText(MainActivity.this, "您正在点击图片" + position, Toast.LENGTH_SHORT).show(); } }); } // 此方法用于获取网络资源,并设置给Banner实现图片自动轮播 private void initdata() { //传入图片网址获取网络资源,并设置给Banner实现图片自动轮播 new MAsynctask().execute(url); } //异步加载newsjson数据 class MAsynctask extends AsyncTask { @Override protected String doInBackground(String... strings) { //返回获取到的Json数据 return MyTools.getJson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //获取Json数据,并进行解析 Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); //得到集合 List data = bean.getData(); // for循环,得到集合每一个对象中的图片路径,封装进集合 for (int i = 0; i < data.size(); i++) { // 图片路径封装进集合 list.add(data.get(i).getPic_url()); } //为Banner设置参数(LmageLoader对象) banner.setImageLoader(new MyImageLoader()); //为Banner设置实现轮播的图片路径的集合 banner.setImages(list); //开启轮播 banner.start(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } }}
图片加载类代码:
package com.example.bannerdemo;import android.content.Context;import android.widget.ImageView;import com.youth.banner.loader.ImageLoader;/** * author:Created by WangZhiQiang on 2017/10/18. */public class MyImageLoader extends ImageLoader { //此方法用于为Viewpager上展示ImagerView(图片)的控件设置图片 @Override public void displayImage(Context context, Object path, ImageView imageView) { //得到ImageLoader的实例 com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); //通过ImageLoader设置图片 instance.displayImage((String) path, imageView); }}
更多相关文章
- android中如何设置点击button页面跳转
- Snackbar使用,修改字体和背景颜色
- android support Percent支持库开发
- Android异步下载网络图片(其三)
- android developer API Guider之user interface---Settings(二)
- 图片加载处理
- 第四章(2)Libgdx手工项目设置
- 【Android】更改程序图标
- Android仿淘宝头条垂直滚动,垂直走马灯,公告