Android : XUI- SimpleImageBanner+BannerItem带标题的轮播图-简单应用

news2024/12/23 17:03:10

示例图:

1.导入XUI

http://t.csdnimg.cn/qgGaN

2.MainActivity.java

package com.example.viewpagerbanne;


import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.xuexiang.xui.widget.banner.widget.banner.BannerItem;
import com.xuexiang.xui.widget.banner.widget.banner.SimpleImageBanner;
import com.xuexiang.xui.widget.banner.widget.banner.SimpleTextBanner;
import com.xuexiang.xui.widget.banner.widget.banner.base.BaseBanner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    //banner 中的标题
    public static String[] titles = new String[]{
            "伪装者:胡歌演绎'痞子特工'",
            "无心法师:生死离别!月牙遭虐杀",
            "花千骨:尊上沦为花千骨",
            "综艺饭:胖轩偷看夏天洗澡掀波澜",
            "碟中谍4:阿汤哥高塔命悬一线,超越不可能",
    };

    //banner 的图片资源
    public static String[] urls = new String[]{//640*360 360/640=0.5625
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144160323071011277.jpg",//伪装者:胡歌演绎"痞子特工"
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144158380433341332.jpg",//无心法师:生死离别!月牙遭虐杀
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144160286644953923.jpg",//花千骨:尊上沦为花千骨
            "http://photocdn.sohu.com/tvmobilemvms/20150902/144115156939164801.jpg",//综艺饭:胖轩偷看夏天洗澡掀波澜
            "http://photocdn.sohu.com/tvmobilemvms/20150907/144159406950245847.jpg",//碟中谍4:阿汤哥高塔命悬一线,超越不可能
    };

    private List<BannerItem> bannerItemList;
    private SimpleImageBanner simpleImageBanner, simpleImageBanner2, simpleImageBanner3, simpleImageBanner4;

    //文字轮播SimpleTextBanner
    private SimpleTextBanner simpleTextBanner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        simpleImageBanner = findViewById(R.id.sib_simple_usage);
        simpleImageBanner2 = findViewById(R.id.simple_image_banner);
        simpleImageBanner3 = findViewById(R.id.banner3);
        simpleImageBanner4 = findViewById(R.id.simple_image_banner4);

        //
        simpleTextBanner = findViewById(R.id.textBanner);

        //初始化数据
        initData();

        onclick(simpleImageBanner2);
        //设置指示器的图片资源
//        simpleImageBanner3.setIndicatorStyle(0)
//                .setIndicatorSelectorRes(R.drawable.left,R.drawable.right);

        //设置指示器样式,在设置指示器资源时不能少
        onclick(simpleImageBanner3);

        onclick(simpleImageBanner4);

        simpleImageBanner.setTextColor(0xffff0000);
        //事件 设置资源事件
        simpleImageBanner.setSource(bannerItemList).setOnItemClickListener(new BaseBanner.OnItemClickListener<BannerItem>() {
                    @Override
                    public void onItemClick(View view, BannerItem item, int position) {
                        //每项事件
                        Toast.makeText(MainActivity.this, "点击了-》" + position, Toast.LENGTH_SHORT).show();
                    }
                }).setIsOnePageLoop(false)  //设置当页面只有一条时,是否轮播
                .startScroll();     //开始滚动

        //文字轮播事件
        simpleTextBanner.setSource(Arrays.asList(titles)).setOnItemClickListener(new BaseBanner.OnItemClickListener<String>() {
            @Override
            public void onItemClick(View view, String item, int position) {
                //每项事件
                Toast.makeText(MainActivity.this, "点击了-》" + item, Toast.LENGTH_SHORT).show();

            }
        }).setIsOnePageLoop(false).startScroll();

    }

    /**
     * 初始化数据
     */
    public void initData() {
        bannerItemList = new ArrayList<>();

        //添加BannerItem
        for (int i = 0; i < urls.length; i++) {
            BannerItem bannerItem = new BannerItem();
            //设置标题 图片
            bannerItem.setTitle(titles[i]);
            bannerItem.setImgUrl(urls[i]);
            //添加到集合
            bannerItemList.add(bannerItem);
        }

    }

    /**
     * 事件
     */
    private void onclick(SimpleImageBanner sib) {
        sib.setSource(bannerItemList)
                .setOnItemClickListener(new BaseBanner.OnItemClickListener<BannerItem>() {
                    @Override
                    public void onItemClick(View view, BannerItem item, int position) {
                        //每项事件
                        Toast.makeText(MainActivity.this, "点击了-》" + position, Toast.LENGTH_SHORT).show();

                    }
                })
                .setIsOnePageLoop(false)//设置当页面只有一条时,是否轮播
                .startScroll();//开始滚动

    }
}

3.布局文件 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">


    <!--
     app:bb_indicatorGravity="RIGHT"
      设置指示器位置.默认Gravity.CENTER时文字不显示
    -->


    <!--
       设置指示器的图片资源
Ctrl + 鼠标左键 可点击自行查看相关解释
app:bb_indicatorSelectRes="@drawable/ic_banner_dot_select"
app:bb_indicatorStyle="DRAWABLE_RESOURCE"
app:bb_indicatorUnselectRes="@drawable/ic_banner_dot_unselect"
设置指示器宽度,单位dp,默认6dp
attr format="dimension" name="bb_indicatorWidth
设置指示器高度,单位dp,默认6dp
attr format="dimension" name="bb_indicatorHeight

设置指示器选中drawable资源
bb_indicatorSelectRes
设置指示器未选中drawable资源
bb_indicatorUnselectRes

    -->

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView3"
                android:layout_width="fill_parent"
                android:layout_height="48dp"
                android:gravity="center_vertical"
                android:paddingStart="25dp"
                android:text="SimpleImageBanner带标题的图片轮播"
                android:textColor="#383838"
                android:textSize="16sp"
                tools:ignore="MissingConstraints" />

            <com.xuexiang.xui.widget.banner.widget.banner.SimpleImageBanner
                android:id="@+id/sib_simple_usage"
                android:layout_width="fill_parent"
                android:layout_height="200dp"
                app:bb_barColor="#ff00ff00"
                app:bb_indicatorGravity="LEFT"
                app:bb_scale="0.5625"
                tools:ignore="MissingConstraints" />

            <com.xuexiang.xui.widget.banner.widget.banner.SimpleImageBanner
                android:id="@+id/simple_image_banner"
                android:layout_width="fill_parent"
                android:layout_height="180dp"
                app:bb_indicatorGravity="RIGHT"
                app:bb_indicatorHeight="4dp"
                app:bb_indicatorSelectColor="#ff00ff00"
                app:bb_indicatorWidth="10dp"
                app:bb_scale="0.5625"
                tools:ignore="MissingConstraints" >

            </com.xuexiang.xui.widget.banner.widget.banner.SimpleImageBanner>

            <com.xuexiang.xui.widget.banner.widget.banner.SimpleImageBanner
                android:id="@+id/banner3"
                android:layout_width="fill_parent"
                android:layout_height="200dp"
                app:bb_indicatorGravity="RIGHT"
                app:bb_indicatorHeight="20dp"
                app:bb_indicatorSelectColor="#ff00ff00"
                app:bb_indicatorSelectRes="@drawable/off"
                app:bb_indicatorStyle="DRAWABLE_RESOURCE"
                app:bb_indicatorUnselectRes="@drawable/on"
                app:bb_indicatorWidth="20dp"
                app:bb_scale="0.5625"
                tools:ignore="MissingConstraints" />

            <TextView
                android:id="@+id/textView5"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:gravity="center_vertical"
                android:paddingStart="25dp"
                android:text="指示器图片在左——文字在右: "
                android:textColor="#383838"
                android:textSize="16sp"
                tools:ignore="MissingConstraints" />


            <com.xuexiang.xui.widget.banner.widget.banner.SimpleImageBanner
                android:id="@+id/simple_image_banner4"
                android:layout_width="fill_parent"
                android:layout_height="180dp"
                app:bb_barColor="#CCC"
                app:bb_indicatorGravity="LEFT"
                app:bb_indicatorHeight="4dp"
                app:bb_indicatorSelectColor="#ff00ff00"
                app:bb_indicatorWidth="10dp"
                app:bb_scale="0.5625"
                tools:ignore="MissingConstraints" />

            <TextView
                android:id="@+id/textView6"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:gravity="center_vertical"
                android:paddingStart="25dp"
                android:text="文字轮播: "
                android:textColor="#383838"
                android:textSize="16sp"
                tools:ignore="MissingConstraints" />

            <com.xuexiang.xui.widget.banner.widget.banner.SimpleTextBanner
                android:id="@+id/textBanner"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_marginTop="50dp"
                app:bb_isIndicatorShow="false" />


        </LinearLayout>
    </ScrollView>


</androidx.constraintlayout.widget.ConstraintLayout>

4.其他配置

AndroidMainifest.xml 中
 
联网权限:
 
    <uses-permission android:name="android.permission.INTERNET"/>
 
 
//上网配置

<application
...
  android:usesCleartextTraffic="true"
...
>
 

buid.gradle 中:导入
 
dependencies {
 
    //Xui
    implementation 'com.github.xuexiangjys:XUI:1.1.5'
...
    //解决加载图片报错
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    implementation 'com.github.bumptech.glide:compiler:4.11.0'
...
 
}
 
 
 
 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1305277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue项目中 CDN 是vue本身的依赖可以按需加载还是项目中所有的第三方库都可以按需加载?

这是我看到CDN简介时产生的问题 相信很多小伙伴会有 和我一样的疑问 在这里 我也统一回答一下 CDN&#xff08;内容分发网络&#xff09;是一种通过将数据分发到全球各个节点&#xff0c;以提供快速、可靠的内容传输的技术。在Vue项目中&#xff0c;CDN可以用于按需加载Vue本…

Linux--操作系统

1. 常见的操作系统 Windowsmac OSLinuxiOSAndroid 2. 操作系统的定义 操作系统直接运行在计算机上的系统软件&#xff0c; 它是控制硬件和支持软件运行的计算机程序。 3. 操作系统的作用 向下控制硬件向上支持软件的运行&#xff0c;具有承上启下的作用。 4.总结 操作系统…

Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 is available

记录一次服务调用中的错误 背景&#xff1a;我使用了nacos2.x的版本&#xff0c;同时在同一台服务器的三个docker容器中部署了nacos1、2、3&#xff0c;并将它们连接到了同一个docker网络 错误&#xff1a;Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 …

事件驱动架构 vs. RESTful架构:通信模式对比与选择

1. 通信风格 事件驱动架构&#xff08;EDA&#xff09; 是一种异步通信风格&#xff0c;组件之间通过产生和消费事件进行通信。 事件是表示系统中重大变化或事件的消息&#xff0c;并分发给感兴趣的组件。这种通信模型允许系统的不同部分之间进行解耦和动态交互。 组件充当事件…

MTK Android P Sensor架构(一)

需求场景&#xff1a; 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点&#xff0c;是一件比较轻松的事情&#xff0c;但是最近上层应用的同事要求我们按照安卓标准的流程来&#xff0c;这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…

从手工测试进阶中高级测试?如何突破职业瓶颈...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、手工测试如何进…

【教3妹学编程-算法题】需要添加的硬币的最小数量

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到新闻&#xff0c; 有人中了2.2亿彩票大奖&#xff01; 2哥 : 看到了&#xff0c;2.2亿啊&#xff0c; 一生一世也花不完。 3妹&#xff1a;为啥我就中不了呢&#xff0c;不开心呀不开心。 2哥 : 得了吧&#xff0c;你又不买彩票&…

Vue 双向绑定:让数据与视图互动的魔法!(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

人体关键点检测3:Android实现人体关键点检测(人体姿势估计)含源码 可实时检测

目录 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法&#xff1a; 3.人体关键点检测模型训练 4.人体关键点检测模型Android部署 &#xff08;1&#xff09; 将Pytorch模型转换ONNX模型 &#xff08;2&#xff09; 将ONNX模型转换…

【JVM从入门到实战】(一) 字节码文件

一、什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。 JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 二、JVM的功能 解释和运行 对字节码文件中的指令&#xff0c;实时的解释成机器码&#xff0c;让计算机…

图论——二分图

图论——二分图 二分图通俗解释 有一个图&#xff0c;将顶点分成两类&#xff0c;边只存在不同类顶点之间&#xff0c;同类顶点之间设有边。称图 G 为二部图&#xff0c;或称二分图&#xff0c;也称欧图。 性质 二分图不含有奇数环图中没有奇数环&#xff0c;一定可以转换为二…

005、Softmax损失

之——softmax与交叉熵 杂谈 我们常用到softmax函数与交叉熵的结合作为损失函数以监督学习&#xff0c;这里做一个小小的总结。 正文 1.softmax的基本改进 所谓softmax就是在对接全连接层输出时候把输出概率归一化&#xff0c;最基础的就是这样&#xff1a; 效果就是这样&…

图文教程:stable-diffusion的基本使用教程 txt2img(多图)

之前我介绍了SD的安装过程&#xff0c;那么这篇将介绍怎么使用SD 使用模型 SD安装好之后&#xff0c;我们只有一个默认的模型。这个模型很难满足我们的绘图需求&#xff0c;那么有2种方法。 1是自己训练一个模型&#xff08;有门槛&#xff09;2是去网站上找一个别人练好的模…

算法通关村第四关—表达式问题(黄金)

表达式问题 一、计算器问题 计算器也是非常常见的问题&#xff0c;我们看一个中等问题。LeetCode227.给你一个字符串表达式s&#xff0c;请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。  你可以假设给定的表达式总是有效的。所有中间结果将在[-231,231…

关于Anaconda的安装和环境部署(此章专为新手制定)

目录 Anaconda简介 一、软件下载&#xff08;地址&#x1f447;&#xff09; 2&#xff1a;点击下载 3&#xff1a;版本选择&#xff1a; 4&#xff1a;Anaconda的安装包就下载完成了 2&#xff1a;恭喜你&#xff0c;看到这里已经完成安装了 三、部署环境 1&#xff1…

Vue 双向绑定:让数据与视图互动的魔法!(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Wireshark中的http协议包分析

Wireshark可以跟踪网络协议的通讯过程&#xff0c;本节通过http协议&#xff0c;在了解Wireshark使用的基础上&#xff0c;重温http协议的通讯过程。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于 字节流…

FastAPI之响应模型

前言 响应模型我认为最主要的作用就是在自动化文档的显示时&#xff0c;可以直接给查看文档的小伙伴显示返回的数据格式。对于后端开发的伙伴来说&#xff0c;其编码的实际意义不大&#xff0c;但是为了可以不用再额外的提供文档&#xff0c;我们只需要添加一个 response_mod…

scala变量与变量类型

1.6 变量与类型&#xff08;重点&#xff09;1.6.1 变量推断1.6.2 多变量定义1.6.3 var和val的区别 1.6.3.1 是否可变 1.6.3.2 延迟加载 1.6 变量与类型&#xff08;重点&#xff09; val修饰的变量&#xff0c;相当于Java中final修饰的变量; // 定义常量s1&#xff0c;使用…

11.进制转换:十进制转二进制【2023.12.3】

1.问题描述 计算机底层原理中常使用二进制来表示相关机器码&#xff0c;学会将十进制数转换成二进制数是一个非常重要的技能。现在编写一个程序&#xff0c;输入一个十进制数&#xff0c;将其转换成二进制数。 2.解决思路 使用内置函数bin()将十进制数转换为二进制数 3.代码…