您的位置:首页 > 移动开发 > Android开发

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

2017-10-18 18:25 507 查看

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<String> list = new ArrayList<>();@Overrideprotected 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() {@Overridepublic 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<String, Void, String> {@Overrideprotected String doInBackground(String... strings) {//返回获取到的Json数据return MyTools.getJson(strings[0]);}@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);//获取Json数据,并进行解析Gson gson = new Gson();Bean bean = gson.fromJson(s, Bean.class);//得到集合List<Bean.DataBean> data = bean.getData();// for循环,得到集合每一个对象中的图片路径,封装进集合for (int i =aed10; i < data.size(); i++) {// 图片路径封装进集合list.add(data.get(i).getPic_url());}//为Banner设置参数(LmageLoader对象)banner.setImageLoader(new MyImageLoader());//为Banner设置实现轮播的图片路径的集合banner.setImages(list);//开启轮播banner.start();}@Overrideprotected 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(图片)的控件设置图片@Overridepublic 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);}}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐