欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

安卓开发笔记(三十二):banner轮播图的实现

程序员文章站 2022-04-09 18:24:26
一.activity.xml 我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间。 二.添加相关的库以及网络权限 三.activity.java 四.网络图片加载的新类 代码一共就这些,全部 ......

一.activity.xml

我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间。

<?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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".mainactivity">


    <scrollview
        android:layout_width="match_parent"
        android:layout_height="match_parent">
<linearlayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <com.youth.banner.banner
            android:id="@+id/banner"
            android:layout_width="match_parent"
            android:layout_height="170dp"



            />

</linearlayout>
    </scrollview>

</linearlayout>

二.添加相关的库以及网络权限

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

 

 implementation'com.youth.banner:banner:1.4.10'
 implementation "com.github.bumptech.glide:glide:4.6.1"

三.activity.java

import android.support.v7.app.actionbar;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.widget.imageview;
import android.widget.toast;

import com.bumptech.glide.glide;
import com.youth.banner.banner;
import com.youth.banner.bannerconfig;
import com.youth.banner.transformer;
import com.youth.banner.listener.onbannerlistener;
import com.youth.banner.loader.imageloader;

import java.util.arraylist;
import java.util.list;

public class mainactivity extends appcompatactivity {
    banner banner;//banner组件
    list mlist;//图片资源
    list<string> mlist1;//轮播标题
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);

        actionbar actionbar=getsupportactionbar();
        if(actionbar !=null)
        {
            actionbar.hide();
        }



        mlist = new arraylist<>();
        mlist.add("http://pic0.iqiyipic.com/common/lego/20190504/5c7c889174894cd7aed96218320e1945.jpg");
        mlist.add("http://pic3.iqiyipic.com/common/lego/20190504/902898f2117c41ccaea5fa36eb4d0545.jpg");
        mlist.add("http://pic3.iqiyipic.com/common/lego/20190504/8245013abf2b44ce8736d7435d4567dc.jpg");
        mlist.add("http://pic2.iqiyipic.com/common/lego/20190501/9cdcc1a900a34c1497aeff9c5af610f2.jpg");
        mlist1 = new arraylist<>();
        mlist1.add("这是一个美好的早晨");
        mlist1.add("但我们并不美好");
        mlist1.add("因为我是学人工智能的");
        mlist1.add("已经被学金融的虐得头破血流");

        banner = findviewbyid(r.id.banner);

        banner.setimageloader(new glideimageloader());   //设置图片加载器
        banner.setimages(mlist);//设置图片源
        banner.setbannertitles(mlist1);//设置标题源
        banner.setdelaytime(2000);//设置轮播事件,单位毫秒
        banner.setbanneranimation(transformer.zoomoutslide);//设置轮播动画,动画种类很多,有兴趣的去试试吧,我在这里用的是默认
//stack

/**
 *  轮播图的点击事件
 */
        banner.setonbannerlistener(new onbannerlistener() {
            @override
            public void onbannerclick(int position) {
                toast.maketext(mainactivity.this, "这是第" + position +"个效果", toast.length_short).show();
            }
        });
        banner.setindicatorgravity(bannerconfig.center);//设置指示器的位置

        banner.start();//开始轮播,一定要调用此方法。



    }


//下面的代码可写可不写,用于提升控件的加载效率
    protected void onresume() {
        super.onresume();
        banner.start();
    }

    @override
    protected void onstop() {
        super.onstop();
        banner.stopautoplay();
    }

}

四.网络图片加载的新类

import android.content.context;
import android.widget.imageview;

import com.bumptech.glide.glide;
import com.youth.banner.loader.imageloader;

public class glideimageloader extends imageloader {


    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效果了,十分简单。