Android中实现自动轮播的框架(Banner)的介绍以及使用

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 ArrayList list = 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);
    }
}
 
   
 
   
 
  

你可能感兴趣的:(Androi开发)