IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> XBanner轮播图控件的使用(maven添加的简单使用)_2022.06.23 -> 正文阅读

[Java知识库]XBanner轮播图控件的使用(maven添加的简单使用)_2022.06.23

XBanner轮播图控件的使用(我又来了,哈哈哈)

上次的百度地图SDK采用的方法是直接copy了jar文件(可以说是学习了如何使用jar包)

这次的重点是 maven的使用这个操作只是一种方法,因为其他的我暂时还不会,大佬勿喷

先说说轮播图控件,就是软件内一个不断自动切换图片的一个控件

懒的下载了,直接浏览器看吧(就像京东这个1元问医生的图片,他会自己不断切换,按照开发者自己设置的不断更新)

在这里插入图片描述

我的实现效果(图片很熟悉吧,我CSDN的头像,为啥不用别的,因为我懒)

在这里插入图片描述

下面说怎么操作

这是我使用的一个XBanner控件的官网https://www.freesion.com/article/6258916864/,自取

直接采用第一种方法,因为它可以学习maven

在这里插入图片描述

其实对于大多小白来说不会使用的就是上面第二个代码框内的代码,都错误的把他添加到总工程项目的build.gradle里(为啥这么说,因为刚开始我就是这样做的,哼!)

// Top-level build file where you can add configuration options common to all sub-projects/modules.


plugins {
    id 'com.android.application' version '4.2.2' apply false
    id 'com.android.library' version '4.2.2' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

所以要怎么操作呢??? 它需要添加到总项目的settings.gradle里使用!!!(对于我一个小白来说,maven的使用就是这样)

在这里插入图片描述

为啥有的项目里不能显示我左边那样的tree(就是列表),

因为需要转化到Project模式下开发(如图)

在这里插入图片描述

添加maven库

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
            //maven:我在这里,我要到这里!!!!
        maven { url 'https://jitpack.io' }//这里是你需要添加的maven哦!!!!!!!

    }
}


rootProject.name = "XBan"
include ':app'

Add the dependency(添加依赖)

//将latestVersion替换成上面 jitpack 后面的版本号这句话是要你把github上最新的版本添加过来!!!

dependencies {
    implementation 'com.github.xiaohaibin:XBanner:latestVersion'//将latestVersion替换成上面 jitpack 后面的版本号
}

我这里使用的是1.8.9版本

implementation 'com.github.xiaohaibin:XBanner:1.8.9'
   //为啥要下面的Glide依赖?因为你的网络图片和获取他是最好用的工具!!!!
implementation 'com.github.bumptech.glide:glide:4.9.0'
在app目录下,别搞错了

在这里插入图片描述

添加xml

    <com.stx.xhb.xbanner.XBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/xbanner"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        app:AutoPlayTime="3000"
        app:pointsContainerBackground="#44aaaaaa"
        app:pointNormal="@drawable/shape_noraml"//这是自定义的图片/颜色自己改吧(指示器未选中时的状态),最好用图片
        app:pointSelect="@drawable/shape_selected"//(指示器选中时的状态)
        app:pointsPosition="RIGHT"
        app:tipTextSize="12sp"
        app:isShowNumberIndicator="true"
        app:isShowIndicatorOnlyOne="true"
        app:pageChangeDuration="800"/>

添加java声明

  //获取控件
        XBanner banner = (XBanner) findViewById(R.id.xbanner);

插入图片(为啥是List,因为banner.setData需要数组,我只使用了第一个参数

    List<String> list2 = new ArrayList<>();
        for (int i = 0; i < 7; i++) {
            //这里是图片链接(我CSDN头像,循环了7次,因为我懒)
            list2.add("https://profile.csdnimg.cn/F/9/E/1_qq_37567841");
            //想用不同的图片清去掉for循环,用下面的方法添加不同的图片
            // list2.add(图片链接);
        }
        banner.setData(list2, null);
        banner.loadImage(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, Object model, View view, int position) {
                //设置图片圆角角度
                RoundedCorners roundedCorners = new RoundedCorners(20);
                //通过RequestOptions扩展功能,override:采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗
                // RequestOptions options = RequestOptions.bitmapTransform(roundedCorners).override(300, 300);
                RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
                Glide.with(MainActivity.this).load(list2.get(position)).apply(options).into((ImageView) view);
            }
        });
        banner.setPageTransformer(Transformer.Default);

完整的java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.stx.xhb.xbanner.XBanner;
import com.stx.xhb.xbanner.transformers.Transformer;

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

public class MainActivity extends AppCompatActivity {




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取控件
        XBanner banner = (XBanner) findViewById(R.id.xbanner);

        List<String> list2 = new ArrayList<>();
        for (int i = 0; i < 7; i++) {
            list2.add("https://profile.csdnimg.cn/F/9/E/1_qq_37567841");
        }
        banner.setData(list2, null);
        banner.loadImage(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, Object model, View view, int position) {
                //设置图片圆角角度
                RoundedCorners roundedCorners = new RoundedCorners(20);
                //通过RequestOptions扩展功能,override:采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗
                // RequestOptions options = RequestOptions.bitmapTransform(roundedCorners).override(300, 300);
                RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
                Glide.with(MainActivity.this).load(list2.get(position)).apply(options).into((ImageView) view);
            }
        });
        banner.setPageTransformer(Transformer.Default);



    }
}

运行看看

是不是报错了,哈哈哈

Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver$1 found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver$MyResultReceiver found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules core-1.5.0-runtime (androidx.core:core:1.5.0) and support-compat-27.1.1-runtime (com.android.support:support-compat:27.1.1)

Go to the documentation to learn how to Fix dependency resolution errors.

因为这些依赖大多是-混合支持库,所以怎么解决呢?

总项目gradle.properties里添加下面的代码就行了重复的自己删除一个

# 需要在gradle.properties中添加下面两行代码
# 这是因为混合支持库。通过添加这些行选择androidX作为您的支持库

android.useAndroidX=true
android.enableJetifier=true

在这里插入图片描述

在这里插入图片描述

再运行一下试试,可以了吧

快,咱也不要投币,抬抬您的贵手给咱点个赞吧,写个评论也行啊

优化一下,添加生命周期、与Activity生命周期联动

当Activity失去焦点时立即停止自动轮播;当Activity获得焦点时才开始自动轮播。代码如下:


import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.stx.xhb.xbanner.XBanner;
import com.stx.xhb.xbanner.transformers.Transformer;

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

public class MainActivity extends AppCompatActivity {

    //获取控件
    XBanner banner ;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取控件
         banner = (XBanner) findViewById(R.id.xbanner);


        List<String> list2 = new ArrayList<>();
        for (int i = 0; i < 7; i++) {
            list2.add("https://profile.csdnimg.cn/F/9/E/1_qq_37567841");
        }
        banner.setData(list2, null);
        banner.loadImage(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, Object model, View view, int position) {
                //设置图片圆角角度
                RoundedCorners roundedCorners = new RoundedCorners(20);
                //通过RequestOptions扩展功能,override:采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗
                // RequestOptions options = RequestOptions.bitmapTransform(roundedCorners).override(300, 300);
                RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
                Glide.with(MainActivity.this).load(list2.get(position)).apply(options).into((ImageView) view);
            }
        });
        banner.setPageTransformer(Transformer.Default);



    }
    @Override
    protected void onResume() {
        super.onResume();
        banner.startAutoPlay();
    }

    @Override
    protected void onStop() {
        super.onStop();
        banner.stopAutoPlay();
    }
}

教程里不会的地方就写个评论,我会尽里帮忙解决的

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 17:56:45  更:2022-06-25 17:58:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:52:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码