翻页视图ViewPager
ViewPager控件允许页面在水平方向左右滑动,就像翻书、翻报纸,Android提供了已经分装好的控件。对于ViewPager来说,一个页面就是一个项(相当于ListView的一个列表项),许多页面组成ViewPager的页面项。
ListView和GridView的适配器使用的是BaseAdapter。ViewPager的适配器使用的是PagerAdapter。
ListView和GridView的监听器使用的是OnItemClickListener。ViewPager的监听器使用的是OnPageChangeListener。
下面是ViewPager三个常用方法的说明:
(1) setAdapter() 设置页面项的适配器,适配器用的是PagerAdapter及其子类。
(2) setCurrentItem() 设置当前页码,即打开翻页视图时默认显示哪个页面。
(3) addOnPageChangeListener() 设置翻页视图的页面切换监听器。该监听器需实现接口OnPageChangeListener下的三个方法:
-1- onPageScrollStateChanged : 在页面滑动状态变化时触发。
-2- onPageScrolled : 在页面滑动过程中触发。
-3- onPageSelected : 在选中页面时,即滑动结束后触发。
1.ViewPager在XML中使用
<androidx.viewpager.widget.ViewPagerandroid:id="@+id/viewPager"android:layout_width=" ~ "android:layout_height=" ~ ">~有翻页标题就添加部分代码~</androidx.viewpager.widget.ViewPager>
2.每页的XML布局文件
例. res / layout / viewitem_layout.xml<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"><ImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter"/></androidx.constraintlayout.widget.ConstraintLayout>
3.翻页适配器 PagerAdapter
例.class MyPagerAdapter extends PagerAdapter{private List<View> viewList;public MyPagerAdapter(List<View> viewList){this.viewList=viewList;//构造函数用于获取适配器资源//如在适配器内声明了资源,就不用写构造函数了}public int getCount() {return viewList.size();}public boolean isViewFromObject( View view, Object object ) {return view.equals(object);}public Object instantiateItem( ViewGroup container, int position ) {//向容器内添加指定页面;返回值也为该页面container.addView(viewList.get(position));return viewList.get(position);}public void destroyItem( ViewGroup container, int position, Object object ) {//从容器中移出指定页面container.removeViewInLayout(viewList.get(position));}
}
适配器必须重写4个方法: getCount() 、isViewFromObject() 、instantiateItem() 、destroyItem()
4.翻页监听器 OnPageChangeListener
class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {//在翻页过程中触发//第一个参数表示当前页面序号;第二个参数表示当前页面偏移量,取值在0到1之间;第三个参数表示当前页面的偏移距离}public void onPageSelected(int position) {//在翻页结束后触发//参数表示当前页面序号}public void onPageScrollStateChanged(int state) {//在翻页状态改变时触发//参数为翻页状态:0为静止 1为正在滑动 2为滑动完毕//滑动状态依次为:正在滑动(1) -> 滑动完毕(2) -> 静止(0)}}
5.翻页视图的使用及设置
ViewPager viewPager=findViewById(R.id.~);viewPager.setAdapter(new MyPagerAdapter( 参数 ));viewPager.setCurrentItem(0);//监听器可不加
viewPager.addOnPageChangeListener(new MyOnPageChangeListener());
6.翻页标题栏 PagerTitleStrip / PagerTabStrip
为了方便开发者处理ViewPager的页码显示与切换,Android附带了两个控件,分别是PagerTitleStrip和PagerTabStrip。两者都是在ViewPager页面上方展示设定的页面标题,不同之处在于PagerTitleStrip只是单纯的文本标题效果,无法点击进行页面切换;PagerTabStrip类似选项卡效果,文本下面有横线,点击左右选项卡即可切换到对应页面。
想在标题栏中显示指定文字,需重写PagerAdapter的getPageTitle()方法,在这方面两个控件的处理是一样的:
class MyPagerAdapter extends PagerAdapter{... ...//用于返回指定序号页面的标题public CharSequence getPageTitle(int position) {return ~ ;}}
翻页标题栏在XML文件中的使用如下:
<androidx.viewpager.widget.ViewPagerandroid:layout_width="match_parent"android:layout_height="match_parent"><androidx.viewpager.widget.PagerTitleStripandroid:id="@+id/pagerTitleStrip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple_200"/></androidx.viewpager.widget.ViewPager>
翻页标题栏因只有文本,所以样式只能调整文本大小及颜色;但因无XML属性,所以只能在代码中调用文本样式的设置方法。
PagerTitleStrip pagerTitleStrip=findViewById(R.id.pagerTitleStrip);
pagerTitleStrip.setTextSize( TypedValue.COMPLEX_UNIT_SP , 20 );
pagerTitleStrip.setTextColor( R.color.white );
相关文章:

翻页视图ViewPager
ViewPager控件允许页面在水平方向左右滑动,就像翻书、翻报纸,Android提供了已经分装好的控件。对于ViewPager来说,一个页面就是一个项(相当于ListView的一个列表项),许多页面组成ViewPager的页面项。 List…...

【可视化Java GUI程序设计教程】第4章 布局设计
4.1 布局管理器概述 右击窗体,单击快捷菜单中的Set Layout 4.1.2 绝对布局(Absolute Layout) 缩小窗口发现超出窗口范围的按钮看不见 Absolute Layout 4.1.2 空值布局(Null Layout) 4.1.3 布局管理器的属性和组件布…...

Elasticsearch配置文件
一 前言 在elasticsearch\config目录下,有三个核心的配置文件: elasticsearch.yml,es相关的配置。jvm.options,Java jvm相关参数的配置。log4j2.properties,日志相关的配置,因为es采用了log4j的日志框架。这里以elasticsearch6.5.4版本为例,并且由于版本不同,配置也不…...

运维:mysql常用的服务器状态命令
目录 1、查询当前服务器运行的进程 2、查询最大链接数 3、查询当前链接数 4、展示当前正在执行的sql语句 5、查询当前MySQL当中记录的慢查询条数 6、展示Mysql服务器从启动到现在持续运行的时间 7、查询数据库存储占用情况 8、查询服务器启动以来的执行查询的总次数 9…...

k8s中kubectl陈述式资源管理
1、 理论 1.1、 管理k8s核心资源的三种基本方法 : 1.1.1陈述式的资源管理方法: 主要依赖命令行工具kubectl进行管理 1.1.1.1、优点: 可以满足90%以上的使用场景 对资源的增、删、查操作比较容易 1.1.1.2、缺点: 命令冗长&…...

11 个最值得推荐的 Windows 数据恢复软件
您可能已经尝试过许多免费的恢复程序,但它们都不起作用,对吧?这就是您正在寻找最好的数据恢复软件的原因。 个人去过那里。根据个人的经验,大多数免费软件并不能解决这个问题。有时,当个人在 PC 上运行恢复程序时&…...

Docker从入门到实战
Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓,应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …...

UE4 材质实操记录
TexCoord的R通道是从左到右的递增量,G通道是从上到下的递增量,R通道减去0.5,那么左边就是【-0.5~0】区间,所以左边为全黑,Abs取绝对值,就达到一个两边向中间的一个递减的效果,G通道同理…...

http协议和Fiddler
文章目录 一、http协议的报文结构1.1http请求和http响应之间的区别1.2http请求1.2.1URL1.2.2方法1.2.3请求头1.2.3.1Host1.2.3.2Content-Length、Content-Type1.2.3.3User-Agent(简称UA)1.2.3.4Referer1.2.3.5Cookie 1.3http响应1.3.1响应状态码1.3.2响应头1.3.2.1Content-Leng…...

李宇航
该篇文章仅用作能直接在百度搜索到我的csdn,进入我的主页,没有实际意义. 进入李宇航博客方法 通过百度搜索"李宇航" 链接: https://blog.csdn.net/llllyh812 1.电脑端进入方法 输入网址链接: https://blog.csdn.net/llllyh812 或者 进入csdn主页,搜索"李宇…...

【JAVA学习笔记】38 - 单例设计模式-静态方法和属性的经典使用
项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/final_ 一、什么是设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。设计模式就像是…...

m1 安装 cocoapods
其实最终解决问题很简单,麻烦的是如果找到解决问题的答案。 前提条件: 命令行工具,不能以rosetta方法打开。 首先安装homebrew 这里不多说了,自行解决。 使用brew安装cocoapods brew install cocoapods, pod --ver…...

【大数据】Kafka 实战教程(一)
Kafka 实战教程(一) 1.Kafka 介绍1.1. 主要功能1.2. 使用场景1.3 详细介绍1.3.1 消息传输流程1.3.2 Kafka 服务器消息存储策略1.3.3 与生产者的交互1.3.4 与消费者的交互 2.Kafka 生产者3.Kafka 消费者3.1 Kafka 消费模式3.1.1 At-most-once(…...

求臻医学:肺癌患者就诊指南及基因检测意义
2023年国家癌症中心公布的最新的数据显示,中国癌症新发病例数前十的癌症分别是:肺癌82万,结直肠癌56万,胃癌48万,乳腺癌42万,肝癌41万,食管癌32万,甲状腺癌22万,胰腺癌12…...

【项目管理】项目中如何进行风险管理
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...

【算法题】得到K个半回文串的最小修改次数
题目: 给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。 请你返回一个整数,表示需要修改的 最少 字符数目。 注意: 如果一个字符串从左往…...

C# 通过IP获取Mac地址(ARP)
C# 通过IP获取Mac地址 [DllImport("Iphlpapi.dll")] private static unsafe extern int SendARP(Int32 dest, Int32 host, ref Int32 mac, ref Int32 length);[DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip);public static…...

【QT】信号和槽
一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a,在Qt中,应用程序对象,有且仅有一个。Widget w; // 窗口对…...

有话则长,无话则短
有话则长,无话则短...

云台/稳定器/无人机姿态控制之欧拉角与四元数控制优缺点分析
基于欧拉角的姿态控制简述: 通过陀螺仪数据解算出姿态:pitch,roll,yaw(相对航向),根据目标 姿态:dst_pitch,dst_roll,dst_yaw计算出误差姿态pitch_err,roll_err,yaw_err。将误差姿态转换为目标速度e_pitch_rate,e_roll_rate,e_yaw_rate。然后…...

Go 工具链详解(六):依赖管理神器
go mod 是 Golang 的官方依赖管理工具,从 Go 1.11 版本开始引入。go mod 使用一种被称为模块(modules)的方式来管理依赖,每个模块都包含了一组 Golang 包。一个 Go 程序可以由多个模块组成,每个模块都可以有自己的 go.…...

C语言解决约瑟夫环问题
约瑟夫环问题是一个经典的数学问题,它的描述如下:有n个人围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始重新报数,数到第m个人出列,如此循环,直到最后一个人…...

6.6 Elasticsearch(六)京淘项目改造
文章目录 1.项目准备2.基础配置2.1 添加pom.xml依赖2.2 yml配置es服务器地址列表 3.具体实现3.1 item实体类封装3.2 添加接口3.3 SearchController 4.search.jsp界面4.1 搜索内容展示4.2 高亮内容样式设置4.3 搜索框内容回填4.4 添加上下页按钮 1.项目准备 我们切换回到此前的…...

Socks5代理:数字化时代的技术支柱
随着数字化时代的到来,技术不仅改变了我们的日常生活,还重新定义了商业、通信、娱乐和全球互联。在这一浪潮中,Socks5代理技术崭露头角,成为跨界电商、爬虫数据分析、企业出海和游戏体验的关键推动力。这项技术不仅在实现数字化愿…...

基本微信小程序的汽车租赁公司小程序
项目介绍 任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于Java语言、微信小程序技术设计并实现了汽…...

Leetcode刷题详解——搜索插入位置
1. 题目链接:35. 搜索插入位置 2. 题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。…...

centos升级openssh
注意: openssh升级异常会造成服务失联,如果在允许的情况下可以安装talent服务,使用talent升级; 如果不能安装talent服务,可以打开多个终端,启动ping命令,防止升级终端失败后,作为备用…...

架构、框架、模式,极简文字介绍
1、架构、框架、模式是一种从大到小的关系,也是一种组合关系 2、架构一般针对一个行业或一类应用,是技术和应用的完美组合 3、框架比较小,很多表现为中间件,框架一般是从技术角度解决同类问题,从技术的横切面来解决实…...

Java实现Fisher‘s Exact Test 的置信区间的计算
实现代码 package com.bgi.aigi.common.utils;public class FisherExactUtils {public static double[] getConfidenceInterval(double[][] data) {if (datanull||data.length!2||data[0].length!2||data[1].length!2) {return null;}double[] intervalnew double[2];double …...

YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022
💡💡💡本文全网首发独家改进:多尺度卷积注意力(MSCA),有效地提取上下文信息,新颖度高,创新十足。 1)作为注意力MSCA使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,多尺度特性在小目标检测表现也十分出色。 💡💡💡Yolov8魔术师,独家首发…...