1、首先依赖这个包:

compile 'xyz.eraise:bannerview:1.0.5'

2、最重要的是要添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />

3、写个实体类存放图片的url:

public class AdEntity {public String pic;
   public String url;

   public AdEntity(String pic, String url) {this.pic = pic;
      this.url = url;
   }public String getPic() {return pic;
   }public void setPic(String pic) {this.pic = pic;
   }
}

4、在activity_main.xml中:

<xyz.eraise.bannerview.BannerView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bv_ad"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:ci_width="10dp"
    app:ci_height="10dp"/>

5、在MainActivity中:

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import java.util.ArrayList;
import xyz.eraise.bannerview.BannerView;

public class MainActivity extends Activity {private BannerView bvAd;
    private BannerAdapterImpl _adAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initWidget();
        initData();
        initListener();
    }private void initWidget() {bvAd = (BannerView) findViewById(R.id.bv_ad);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        params.height = 500;
        bvAd.setLayoutParams(params);
    }private void initData() {// 异步加载后需要重新设置Adapter,并且调用 startAutoScroll
        _adAdapter = new BannerAdapterImpl(this);
        /* 模拟异步请求,过上几分钟再把数据添加到界面上 */
        new AsyncTask<Void, Void, ArrayList<AdEntity>>() {@Override
            protected ArrayList<AdEntity> doInBackground(Void... params) {SystemClock.sleep(3000);
                ArrayList<AdEntity> _adList = new ArrayList<>();
                _adList.add(new AdEntity("http://sh.sinaimg.cn/2011/0629/U5952P18DT20110629112508.jpg", "http://www.sj33.cn/dphoto/stsy/weiju/201105/27977_5.html"));
                _adList.add(new AdEntity("http://wenwen.soso.com/p/20100504/20100504234911-1470813934.jpg", "http://www.baidu.com"));
                _adList.add(new AdEntity("http://www.hanefu.com/images/5041502-12.jpg", "http://www.sina.com"));
                _adList.add(new AdEntity("http://p4.so.qhmsg.com/t01eadb90f083a24fd4.jpg", "http://www.sina.com"));
                _adList.add(new AdEntity("http://p3.so.qhmsg.com/t012beb8b7c9e611c88.jpg", "http://www.sina.com"));
                return _adList;
            }@Override
            protected void onPostExecute(ArrayList<AdEntity> result) {super.onPostExecute(result);
                _adAdapter.setData(result);
                // 将Adapter设置到banner上
                bvAd.setAdapter(_adAdapter);
                bvAd.startAutoScroll();
            }}.execute();
    }private void initListener() {bvAd.setOnBannerClickListener(new BannerView.OnBannerClickListener() {@Override
            public void onClick(BannerView view, int position) {// 通过position获取当前被点击的广告执行相应的操作
                Intent _intent = new Intent(Intent.ACTION_VIEW, Uri.parse(_adAdapter.getItem(position).url));
                startActivity(_intent);
            }});
    }private int dip2px(int dip) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, getResources().getDisplayMetrics());
    }@Override
    protected void onResume() {super.onResume();
        if (null != bvAd) {bvAd.startAutoScroll();
        }}@Override
    protected void onPause() {super.onPause();
        if (null != bvAd) {bvAd.stopAutoScroll();
        }}}

6、values.xml中:

<declare-styleable name="BannerView">
    <attr name="indicator_gravity">
        <enum name="center" value="0"/>
        <enum name="left" value="1"/>
        <enum name="right" value="2"/>
    </attr>
    <attr format="dimension" name="indicator_height"/>
    <attr format="dimension" name="indicator_margin"/>
    <attr format="dimension" name="indicator_marginLeft"/>
    <attr format="dimension" name="indicator_marginRight"/>
    <attr format="dimension" name="indicator_marginTop"/>
    <attr format="dimension" name="indicator_marginBottom"/>
    <attr format="float" name="height_ratio"/>
    <attr format="integer" name="scroll_delay"/>
</declare-styleable>
<declare-styleable name="CircleIndicator">
    <attr format="dimension" name="ci_width"/>
    <attr format="dimension" name="ci_height"/>
    <attr format="dimension" name="ci_margin"/>
    <attr format="reference" name="ci_animator"/>
    <attr format="reference" name="ci_animator_reverse"/>
    <attr format="reference" name="ci_drawable"/>
    <attr format="reference" name="ci_drawable_unselected"/>
    <attr format="enum" name="ci_orientation">
        <enum name="horizontal" value="0"/>
        <enum name="vertical" value="1"/>
    </attr>
    <attr name="ci_gravity">
        <flag name="top" value="0x30"/>
        <flag name="bottom" value="0x50"/>
        <flag name="left" value="0x03"/>
        <flag name="right" value="0x05"/>
        <flag name="center_vertical" value="0x10"/>
        <flag name="fill_vertical" value="0x70"/>
        <flag name="center_horizontal" value="0x01"/>
        <flag name="fill_horizontal" value="0x07"/>
        <flag name="center" value="0x11"/>
        <flag name="fill" value="0x77"/>
        <flag name="clip_vertical" value="0x80"/>
        <flag name="clip_horizontal" value="0x08"/>
        <flag name="start" value="0x00800003"/>
        <flag name="end" value="0x00800005"/>
    </attr>
</declare-styleable>

7、在anim文件下创建scale_with_alpja.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- ViewPager 指示器动画 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime">

    <objectAnimator
        android:propertyName="alpha"
        android:valueType="floatType"
        android:valueFrom="0.5"
        android:valueTo="1.0"/>

    <objectAnimator
        android:propertyName="scaleX"
        android:valueType="floatType"
        android:valueFrom="1.0"
        android:valueTo="1.3"/>

    <objectAnimator
        android:propertyName="scaleY"
        android:valueType="floatType"
        android:valueFrom="1.0"
        android:valueTo="1.3"/>
</set>

8、在drawable文件下创建white_radius.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 指示器图片 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid
        android:color="@android:color/darker_gray"/>
</shape>

好了基本上是这样的实现的,祝猴子们不出bug

android BannerView实现自动轮播广告的用法(参考自github)相关推荐

  1. Axure 9 实战案例,动态面板的应用 5,官网首页自动轮播广告

    前言 Hello!欢迎来到Axure 9 实战案例教程专栏.点击了解课程简介>> 动态面板在Axure原型设计中,可以说是应用最广泛的:本次课程我们继续来学习一下,动态面板的应用:本篇我们 ...

  2. android引导页自动轮播,Android使用ViewPager实现自动轮播

    很多APP中都实现了类似引导页的自动轮播,不由得想到昨天的引导页上修改一下代码实现轮播. 其实大体上只需要添加一个线程循环执行就可以了. 同样的先上图 直接上代码,注释都全的,我想这样更有利于理解. ...

  3. 仿淘宝、头条上下轮播广告

    仿淘宝.头条上下滚动自动轮播广告效果 前言:想必大家工作久了,都会接触横向走马灯.纵向走马灯的效果.在这里介绍系统自带的控件来实现纵向走马灯(上下滚动)效果. 布局: <ViewFlippera ...

  4. Android广告条效果--使用Volley实现网络图片的自动轮播(仿淘宝、网易广告页轮播效果)

    最近在做自定义控件时,发现一个极其常用的效果--广告条,即图片的自动轮播效果.现在市面上大多数的APP软件都在使用这种展示广告的效果.闲来无事,我简单翻看了一下自己的手机软件,几乎都使用了这种图片自动 ...

  5. android 指示器平移动画,Android实现带指示器的自动轮播式ViewPager

    前言 最近在做项目的时候,有个需求就是实现自动轮播式的ViewPager,最直观的例子就是知乎日报顶部的ViewPager,它内部有着好几个子view,每个一段时间便自动滑动到下一个item view ...

  6. 广告图片自动轮播控件

    2019独角兽企业重金招聘Python工程师标准>>> 自定义广告轮播 自定义控件ImageCycleView 每个广告页的对象(包含具体显示图片.内容.id等) 自定义广告控件 I ...

  7. 打造一个丝滑般自动轮播无限循环Android库

    作者:一包纯牛奶 链接: https://juejin.im/post/5d6bce24f265da03db0790d1 本文由作者授权发布. 这里我把作者两篇文章合体了,主要是为了在项目功能介绍的基 ...

  8. java图片轮播_java制作广告图片自动轮播控件

    首页图片的轮播 /** * 广告图片自动轮播控件 * */ public class ImageCycleView extends LinearLayout { /** * 上下文 */ privat ...

  9. Android +kotlin Banner 轮播广告 获取后台数据

    参考网站: (1) https://www.jianshu.com/p/4f0903469bc8(2) https://blog.csdn.net/YuEOrange/article/details/ ...

最新文章

  1. Java 代码多线程问题
  2. java中http解析url,java url 编码(解析http请求汉语言地址 )
  3. 【思维导图总结——数据库系统概论】数据库安全性
  4. Linux生态ox版本,从折腾说Linux生态圈
  5. C++ 字符串指针和字符串指针数组详解
  6. python在法律中的应用_Python在共轭梯度法中的运用
  7. 为ESXi 4.x / 5.x / 6.x / 7.x创建持久暂存位置(1033696)
  8. python输入年月日输出年月日_Python网站浪漫表白神器那些鲜为人知的技术
  9. 深度学习2.0-9.tensorflow的高阶操作之填充与复制
  10. Protocol Buffers动态消息解析
  11. Cadence Orcad Capture属性窗口转置的方法图文教程
  12. 计算机科学与技术专业导论mooc答案,中国大学MOOC人工智能导论(2017级)网课答案...
  13. 天下武功唯快不破--速度要快
  14. ctab法提取dna流程图_CTAB法原理(植物DNA提取经典方法)
  15. 用户太多:互联网巨头之惑
  16. H2数据库入门,看这篇就对了
  17. 迅雷 5.8.14.706 收藏版
  18. .pdm文件怎么打开
  19. Keil报错:Undefined symbol GPIO_Init
  20. OpenGL编程入门学习

热门文章

  1. 百分百背后是百度电商的悲哀
  2. pythonturtle画圆形螺旋风管_圆形风管节点大样图
  3. GLES2.0中文API-glBindAttribLocation
  4. 【day08~10】Java面向对象基础认识
  5. java 一个线程占多少内存_一个jvm线程占用多少操作系统内存
  6. 浅析Web components的痛点
  7. STK Components规格书
  8. 德州仪器宣布收购12寸晶圆厂
  9. 神经网络自我认知模型
  10. vscode 离线安装platformIO (基于Anaconda)以及一些问题总结