banner2.0自定义轮播布局

说明:最近碰到一个需求,让新闻列表实现轮播图的效果,也就是轮播新闻,然后样式必须按照ui设计的样式来弄,之前传统的banner,都是只轮播图片,没想到,这次居然要轮播新闻,
网上找了点资料,发现banner2.0可以实现自定义的样式内容轮播,然后就实现了这个功能,
可以实现点击监听,跳转新闻详情页面
效果图:
在这里插入图片描述

step1:依赖包 ~\app\build.gradle

    implementation 'io.github.youth5201314:banner:2.2.2'implementation "com.github.bumptech.glide:glide:4.6.1"implementation 'com.google.code.gson:gson:2.8.0'implementation 'com.github.bumptech.glide:glide:4.8.0'

step2:清单文件,网络权限 ~\app\src\main\AndroidManifest.xml

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

step3: 主界面ui布局 ~\app\src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/news"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ECECEC"android:orientation="vertical"><com.youth.banner.Bannerandroid:id="@+id/banner"android:layout_width="match_parent"android:layout_height="320dp"android:background="#8DC8F6" /></LinearLayout>

step4:item界面ui布局 ~\app\src\main\res\layout\view_message.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/iv_logo"android:layout_width="100dp"android:layout_height="230dp"android:scaleType="fitXY"android:src="@mipmap/ic_launcher" /><TextViewandroid:id="@+id/tx_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/iv_logo"android:text="@string/app_name"android:textSize="20sp"android:textColor="@android:color/holo_red_dark"/><TextViewandroid:id="@+id/tx_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/tx_title"android:text="@string/app_name"/><TextViewandroid:id="@+id/tx_time"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/tx_content"android:text="@string/app_name"android:textColor="@android:color/holo_orange_light"/></RelativeLayout>

step5: 主界面功能 ~\app\src\main\java\com\example\iosdialogdemo\MainActivity.java

package com.example.iosdialogdemo;import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import com.youth.banner.Banner;
import com.youth.banner.indicator.CircleIndicator;
import java.util.ArrayList;
import java.util.List;
import com.youth.banner.listener.OnBannerListener;public class MainActivity extends AppCompatActivity {private Banner banner;private List<Notice> notices;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);banner = findViewById(R.id.banner);notices = new ArrayList<Notice>();notices.add(new Notice(1, "红楼梦", "曹雪芹", "http://img.netbian.com/file/2024/0516/small0017044jQKI1715789824.jpg", "2022-05-22"));notices.add(new Notice(2, "西游记", "吴承恩", "http://img.netbian.com/file/2024/0516/small001855bTfrr1715789935.jpg", "2022-05-22"));notices.add(new Notice(3, "三国演义", "罗贯中", "http://img.netbian.com/file/2024/0517/small150904ck1C21715929744.jpg", "2022-05-22"));notices.add(new Notice(4, "水浒传", "施耐庵", "http://img.netbian.com/file/2024/0516/small002209I5p4J1715790129.jpg", "2022-05-22"));notices.add(new Notice(5, "桃花源记", "陶渊明", "http://img.netbian.com/file/2024/0519/small190636mQVqM1716116796.jpg", "2022-05-22"));banner.setAdapter(new MsgBannerAdapter(notices, MainActivity.this));banner.addBannerLifecycleObserver(this);banner.setIndicator(new CircleIndicator(MainActivity.this));banner.setOnBannerListener(new OnBannerListener() {@Overridepublic void OnBannerClick(Object o, int i) {Log.e("TAG", "点击了" + notices.get(i).getTitle());}});}
}

step6:轮播适配器 ~\app\src\main\java\com\example\iosdialogdemo\MsgBannerAdapter.java

package com.example.iosdialogdemo;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.youth.banner.adapter.BannerAdapter;
import java.util.List;public class MsgBannerAdapter extends BannerAdapter<Notice, MsgBannerAdapter.BannerViewHolder> {Context mainContext;public MsgBannerAdapter(List<Notice> datas, Context context) {super(datas);mainContext = context;}@Overridepublic BannerViewHolder onCreateHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_message, parent, false);return new BannerViewHolder(view);}@Overridepublic void onBindView(BannerViewHolder holder, Notice data, final int position, int size) {holder.tx_title.setText(mDatas.get(position).getTitle());holder.tx_content.setText(mDatas.get(position).getContent());holder.tx_time.setText(mDatas.get(position).getUpdatedTimeStr());//加载图片Glide.with(mainContext).load(mDatas.get(position).getCreateTimeStr()).into(holder.iv_logo);}class BannerViewHolder extends RecyclerView.ViewHolder {ImageView iv_logo;TextView tx_title, tx_content, tx_time;public BannerViewHolder(@NonNull View itemView) {super(itemView);tx_time = itemView.findViewById(R.id.tx_time);iv_logo = itemView.findViewById(R.id.iv_logo);tx_title = itemView.findViewById(R.id.tx_title);tx_content = itemView.findViewById(R.id.tx_content);}}
}

step7:data数据类 ~\app\src\main\java\com\example\iosdialogdemo\Notice.java

package com.example.iosdialogdemo;import java.io.Serializable;
import java.util.Date;public class Notice implements Serializable {private int id;private String title;private String content;private String createTimeStr;private String updatedTimeStr;private static final long serialVersionUID = 1L;public Notice(int id, String title, String content, String createTimeStr, String updatedTimeStr) {this.id = id;this.title = title;this.content = content;this.createTimeStr = createTimeStr;this.updatedTimeStr = updatedTimeStr;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getCreateTimeStr() {return createTimeStr;}public void setCreateTimeStr(String createTimeStr) {this.createTimeStr = createTimeStr;}public String getUpdatedTimeStr() {return updatedTimeStr;}public void setUpdatedTimeStr(String updatedTimeStr) {this.updatedTimeStr = updatedTimeStr;}
}

end

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

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

相关文章

MySQL 重启之后无法写入数据了?

数据库交接后因 persist_only 级别的参数设置引发的故障分析。 作者&#xff1a;不吃芫荽&#xff0c;爱可生华东交付服务部 DBA 成员&#xff0c;主要负责 MySQL 故障处理及相关技术支持。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系…

CentOS配置DNS

1.打开/etc/resolv.conf文件 sudo vi /etc/resolv.conf2.添加配置 nameserver 114.114.114.1143.保存并关闭文件。 4.为了确保配置生效&#xff0c;重启网络服务或重启系统。例如&#xff1a; 重启网络&#xff1a; sudo systemctl restart network重启系统&#xff1a; …

【渗透测试】|基于dvwa的CSRF初级,中级,高级

一、渗透测试 二、渗透测试过程中遇到的问题和解决 在初级csrf中&#xff0c;想要通过伪造一个404页面&#xff0c;达到修改密码的效果 伪造404页面的html代码如下&#xff1a; <html> <head> </head> <body> <img src"http://192.xx.xx.xx/…

mono3D任务FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection

数据 KITTI 在卡尔斯鲁厄采集的数据&#xff0c;包括雷达&#xff08;64线束激光雷达&#xff09;和摄像头&#xff08;灰色彩色&#xff09;。目标为pvb,场景包括农村、城市、高速。3D目标检测任务包含7481 训练图片和7518 测试图片包含80.256 标注目标。同时带有点云信息。…

C++之类(class)的三种访问修饰符(public、private、protected)----成员变量与函数权限

1、背景介绍 在C中&#xff0c;类&#xff08;class&#xff09;的三种访问修饰符&#xff08;access specifiers&#xff09;用于控制类的成员&#xff08;属性和方法&#xff09;的访问权限。这些修饰符决定了类成员在类的外部是否可以被访问。以下是这三种访问修饰符的详细…

深度学习-语言模型

深度学习-语言模型 统计语言模型神经网络语言模型语言模型的应用序列模型&#xff08;Sequence Model&#xff09;语言模型&#xff08;Language Model&#xff09;序列模型和语言模型的区别 语言模型&#xff08;Language Model&#xff09;是自然语言处理&#xff08;NLP&…

信息安全法规和标准

《全国人民代表大会常务委员会关于维护互联网安全的决定》规定&#xff0c;威胁互联网运行安全的行为&#xff1a;&#xff08;1&#xff09;侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统&#xff0c;&#xff08;2&#xff09;故意制作、传播计算机病毒等破坏性…

Java 中BigDecimal传到前端后精度丢失问题

1.用postman访问接口&#xff0c;返回的小数点精度正常 2.返回到页面里的&#xff0c;小数点丢失 3.解决办法&#xff0c;在字段上加注解 JsonFormat(shape JsonFormat.Shape.STRING) 或者 JsonSerialize(using ToStringSerializer.class) import com.fasterxml.jackson.a…

SpringJDBC

1.前言 Spring JDBC可以帮助开发者节省大量开发工作 自动去处理一些低级细节 比如&#xff1a;异常处理、打开和关闭资源(Connection、PreparedStatement、Statement、ResultSet) 需要下载的jar包&#xff1a; spring-jdbc(普通jar包、源码jar包)由于没有依赖其他的jar包 所以只…

Echarts 实现线条绘制

文章目录 需求分析 需求 用 Echarts 实现如下效果 分析

【优选算法】分治 {三分快排:三指针优化,随机选key,快速选择算法;归并排序:统计数组中的逆序对,统计数组中的翻转对;相关编程题解析}

一、经验总结 1.1 三分快排 优化一&#xff1a;三指针优化 之前学习的快速排序无法妥善处理相等或重复序列的排序问题&#xff08;有序且三数取中无效&#xff09;&#xff0c;使快速排序的效率无法达到最优。 为了解决重复序列的问题&#xff0c;我们将原先的双指针法&…

云计算-无服务器计算与AWS Lambda (Serverless Computing with AWS Lambda)

AWS Lambda 无服务器计算与AWS Lambda AWS Lambda支持无服务器计算&#xff0c;不需要任何预配置和管理&#xff0c;同时还能最大限度地降低成本。我们将看到如何创建一个简单的Lambda函数&#xff0c;以及如何将其与AWS事件映射。在现实生活中&#xff0c;任何托管在线的应用…

每天学点小知识:图床搭建 + CDN简介

前言&#xff1a; 本章内容帮你解决&#xff0c;本地图片不能分享到网上的问题。需要工具github JSDelivr 知识点 Q&#xff1a;什么是JSDelivr&#xff1f; JSDelivr是一个免费且公开的内容分发网络&#xff08;CDN&#xff09;&#xff0c;专门用于加速开源项目和静态网站…

构建php环境、安装、依赖、nginx配置、ab压力测试命令、添加php-fpm为系统服务

目录 php简介 官网php安装包 选择下载稳定版本 &#xff08;建议使用此版本&#xff0c;文章以此版本为例&#xff09; 安装php解析环境 准备工作 安装依赖 zlib-devel 和 libxml2-devel包。 安装扩展工具库 安装 libmcrypt 安装 mhash 安装mcrypt 安装php 选项含…

2024年软件设计师备考复习资料(应用技术)

应用设计&#xff0c;考试时间为120分钟&#xff1b;总共需做5道题&#xff0c;满分75分&#xff08;每题15分&#xff09;。前4题为必答题&#xff0c;最后2题为要求选答一题&#xff08;C或Java&#xff09;&#xff0c;45及格 目录 1. 数据流图&#xff08;需求分析&#…

Python使用Modbus RTU发送数据的技术性指南

目录 一、引言 二、Modbus RTU协议简介 三、Pymodbus库介绍 四、环境准备 五、编写Modbus RTU客户端代码 六、案例分析 七、注意事项与调试技巧 八、扩展功能与应用 九、性能优化与安全性考虑 十、总结 一、引言 在工业自动化领域中&#xff0c;Modbus协议因其开放性…

opencascade AIS_Circle AIS_ColoredDrawer AIS_CameraFrustum 源码学习 圆

类AIS_Circle 构造圆形基准面&#xff0c;用于构建复合形状。 AIS_Circle() [1/2] AIS_Circle::AIS_Circle ( const Handle< Geom_Circle > & aCircle ) 初始化用于构造 AIS 圆形基准面的算法&#xff0c;并初始化圆形 aCircle。 AIS_Circle() [2/2] AIS_Circ…

数据库系统概论(个人笔记)(第三部分)

数据库系统概论&#xff08;个人笔记&#xff09; 文章目录 数据库系统概论&#xff08;个人笔记&#xff09;3、SQL介绍3.1 SQL查询语言概述3.2 SQL数据定义3.3 SQL查询的基本查询结构3.4 其他基本操作3.5 设置操作3.6 空值3.7 聚合函数3.8 嵌套子查询3.9 数据库的修改 3、SQL…

LES物流执行系统,在离散制造行业有那些作用和价值?

离散制造企业往往面临的是多品种、小批量的非标订单生产&#xff0c;传统推动式物流系统已经无法应对计划变化滞后&#xff0c;各车间、工序之间难以衔接等情况&#xff0c;特别是密集劳动力的电子行业&#xff0c;非标产品 SKU 种类繁多&#xff0c;物料配送复杂&#xff0c;对…

【Flowable 7】学习笔记 01 - 初始化数据库表创建流程(源码)

文章目录 前言版本说明配置1、引擎配置初始化2、SQL 执行创建表2.0、创建表概览&#xff08;创建表数目&#xff1a;38&#xff09;2.1、基础组件表创建&#xff08;以 common 组件为例&#xff09;2.2、changelog 组件表创建&#xff08;基于 liquibase&#xff09;2.3、Engin…