Realization of Android Banner carousel frame

(1) Introduce banner dependency

Gradle
dependencies {
    ...
    //轮播图依赖
    implementation 'com.youth.banner:banner:1.4.9'
    //glide框架依赖
    implementation 'com.github.bumptech.glide:glide:4.6.1'
}

(2) Add network permissions

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

(3) Layout file

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

(4) Activity

import android.content.Context;
import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoaderInterface;

import java.util.ArrayList;
import java.util.List;

public class HomeFragment extends Fragment implements OnBannerListener {
    private Banner banner;
    private List<Integer> image = new ArrayList<>();
//    private List<String> titles = new ArrayList<>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_home, container, false);
        banner = view.findViewById(R.id.banner);

        initData();
        initView();

        return view;
    }

    private void initData() {
        image.clear();
//        titles.clear();
        image.add(R.drawable.one);
        image.add(R.drawable.two);
        image.add(R.drawable.three);
//        titles.add("山喜欢");
//        titles.add("水喜欢");
//        titles.add("人说的话也喜欢");
    }

    private void initView() {
        //设置指示器位置,小点点
//        banner.setIndicatorGravity(BannerConfig.CENTER);
        //设置图片加载器
        banner.setImageLoader(new MyImageLoader());
        //设置图片集合
        banner.setImages(image);
//        banner.setBannerTitles(titles);
        //设置banner动画效果
//        banner.setBannerAnimation(Transformer.Default);
        //设置是否为自动轮播,默认是“是”
        banner.isAutoPlay(true);
        //设置内置样式,不显示title和小点点指示器
        banner.setBannerStyle(BannerConfig.NOT_INDICATOR);
        //设置轮播时间
        banner.setDelayTime(3000);
        //轮播图的监听
        banner.setOnBannerListener(this);
        //banner设置方法全部调用完毕时最后调用
        banner.start();
    }

    //轮播图监听方法
    @Override
    public void OnBannerClick(int position) {
        Log.i("tag", "你点了第"+position+"张轮播图");
    }


    //图片加载器
    private class MyImageLoader implements ImageLoaderInterface {
        @Override
        public void displayImage(Context context, Object path, View imageView) {

            Glide.with(context).load(path).into((ImageView) imageView);
        }

        @Override
        public View createImageView(Context context) {
            return null;
        }
    }
}

Effect picture (I don’t know why the recorded picture keeps flashing, but it’s actually good):

 By the way, introduce the commonly used methods, properties and constants of Banner

(1) Method

method name

describe

setBannerStyle(int bannerStyle)

Set the carousel style (default is CIRCLE_INDICATOR)

setIndicatorGravity(int type)

Set the position of the indicator (the default is right if there is no title, and the left is default if there is a title)

isAutoPlay(boolen isAutoPlay)

Set whether to automatically rotate (default automatic)

startAutoPlay()

start carousel

stopAutoPlay()

end carousel

star()

Start banner rendering

setOffscreenPageLimit(int limit)

Same as viewpager method

setBannerTitles(List titles)

Set the corresponding title and picture to be displayed in the carousel (the title will not be displayed by default if it is not passed)

setDelayTime(int time)

Set the carousel image interval time (in milliseconds, the default is 2000)

setImages(Object[]/List<?>imagesUrl)

Set carousel pictures (all parameter setting methods are executed before this method)

setImages(Object[]/List<?>imagesUrl,OnLoadImageListener linstener)

Set carousel pictures and customize picture loading method

setOnBannerClickListener(this)

Set the click event, the subscript starts from 1

setOnLoadImageLinstener(this)

Set the image loading event, you can customize the image loading method

setImageLoader(Object implements ImageLoader)

Set image loader

setOnPageChangeListener(this)

Set the sliding monitor of viewpager

setBannerAnimation(Class<? extends PageTransformer> transformer)

Set the default animation of the viewpager

setPageTansformer(boolean reverseDrawingOrder,ViewPager.PageTransformer transformer)

Set custom animation for viewpager

(2) Attributes attribute (called in the banner layout file):

Attributes

form

describe

delay_time

integer

Carousel execution time, default 2000

is_auto_play

boolean

Whether to rotate automatically, the default is true

title_background

color

reference

title_textColor

color

title font color

title_textsize

dimension

title font size

title_height

dimension

title bar height

indicator_width

dimension

The width of the indicator circular button

indicator_height

dimension

The height of the indicator circular button

indicator_margin

dimension

spacing between indicators

indicator_drawable_selected

reference

The effect of indicator selection

indicator_drawable_unselected

reference

Indicator unchecked effect

image_scale_type

enum

Same as scaleType of imageview

(3) Constants:

constant name

describe

Affiliation method

BannerConfig.NOT_INDICATOR

Don't show indicator and title

setBannerStyle

BannerConfig.CIRCLE_INDICATOR

Show circular indicator

setBannerStyle

BannerConfig.NUM_INDICATOR

Show digital indicator

setBannerStyle

BannerConfig.NUM_INDICATOR_TITLE

Show numeric indicator and title

setBannerStyle

BannerConfig.CIRCLE_INDICATOR_TITLE

Show circular indicator and title (vertical display)

setBannerStyle

BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE

显示圆形指示器和标题(水平显示)

setBannerStyle

BannerConfig.LEFT

指示器居左

setIndicatorGravity 

BannerConfig.CENTER

指示器居中

setIndicatorGravity 

BannerConfig.RIGHT

指示器居右

setIndicatorGravity 

(四)动画常量( setBannerAnimation调用):

Transformer.Default

Transformer.Accordion

Transformer.BackgroundToForeground 

Transformer.CubeIn

Transformer.CubeOut 

Transformer.DepthPage 

Transformer.FlipVertical

Transformer.RotateDown 

Transformer.RotateUp 

Transformer.Stack 

Transformer.Tablet 

Transformer.ZoomIn 

Transformer.ZoomOutSlide

Guess you like

Origin blog.csdn.net/L73748196_/article/details/125285563