安卓APP_ 布局(7) —— ViewPager翻页

摘自:安卓APP_ 布局(7) —— ViewPager翻页
作者:丶PURSUING
发布时间: 2021-04-14 19:37:18
网址:https://blog.csdn.net/weixin_44742824/article/details/115705471

ViewPager

  • 实现效果一睹为快
  • (1)创建三个页面布局:
  • (2) 在`activity_main.xml`中创建`viewpage`
  • (3)创建每一个布局(layout)对应的view,并把他们添加到集合中:
  • (4)再用adapter适配器传输布局数据:
  • 更多细节在源码中体现

实现效果一睹为快

页面翻页:

在这里插入图片描述

(1)创建三个页面布局:

在这里插入图片描述

(2) 在activity_main.xml中创建viewpage

在这里插入图片描述

(3)创建每一个布局(layout)对应的view,并把他们添加到集合中:

MainActivity.java中:
在这里插入图片描述

(4)再用adapter适配器传输布局数据:

在这里插入图片描述

其中创建的类MyAdapter.java,要重写实现几个方法

instantiateItem
在这里插入图片描述
getCount

在这里插入图片描述
isViewFromObject

在这里插入图片描述
destroyItem

在这里插入图片描述
补充:

使用代码生成器(Alt + enter),搜索方法名字,重写方法。
在这里插入图片描述

更多细节在源码中体现

mylayout1.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#00ffff"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="layout1"android:textSize="50sp"/></LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#00ffff"android:orientation="vertical"><androidx.viewpager.widget.ViewPagerandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/vp"/></LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//通过Inflater进行渲染LayoutInflater lf = getLayoutInflater().from(this);//使用lf对象进行渲染View view1 = lf.inflate(R.layout.mylayout1, null);View view2 = lf.inflate(R.layout.mylayout2, null);View view3 = lf.inflate(R.layout.mylayout3, null);//把三个view添加到集合中List<View> viewList = new ArrayList<>();viewList.add(view1);viewList.add(view2);viewList.add(view3);ViewPager viewPage = findViewById(R.id.vp);//有了集合后,创建AdapterMyAdapter myAdapter = new MyAdapter(viewList);viewPage.setAdapter(myAdapter);}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

MyAdapter.java

public class MyAdapter extends PagerAdapter {//创建View列表private List<View> mListView;public MyAdapter(List<View> mListView){this.mListView = mListView;}@NonNull@Override//方法实现了:(1)将给定位置的view添加到ViewGroup(容器)中,创建并显示出来//         (2)返回一个代表新增页面的Object(key),通常都是直接返回view本身就可以public Object instantiateItem(@NonNull ViewGroup container, int position) {container.addView(mListView.get(position),0);return mListView.get(position);}@Override//获得viewpager中有多少个viewpublic int getCount() {return mListView.size();}@Override//判断instantiateItem方法返回来的key与一个页面视图是否代表同一个视图(即他们是否相对应,对应则表示同一个view)//通常是直接写return view == objectpublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}@Override//移除一个给定位置的页面public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView(mListView.get(position));}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

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

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

相关文章

15个实用的grep示例

2019独角兽企业重金招聘Python工程师标准>>> 首先&#xff0c;新建如下文件demo_file THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE. this line is the 1st lower case line in this file. This Line Has All Its First Character Of The Word With Upper C…

IntelliJ IDEA 连接数据库 详细过程

IntelliJ IDEA集成了众多插件&#xff0c;方便开发者使用&#xff0c;使用其自带的Database模块就可以很方便的配置、连接到数据库&#xff0c;本次操作以MySQL为例&#xff0c;其中testjdbc数据库已经提前建好&#xff0c;里面有两张表emp_table 和 t_user&#xff0c;相关信息…

Linux线程编程

参考&#xff1a;Linux多线程编程初探 作者&#xff1a;峰子_仰望阳光 网址&#xff1a;https://www.cnblogs.com/xiehongfeng100/p/4620852.html 目录线程概述线程概念线程与进程区别为何用线程线程开发api概要线程创建、等待、退出线程创建线程退出线程等待线程ID获取及比较线…

Controlling Execution

2019独角兽企业重金招聘Python工程师标准>>> 逗号操作符 逗号操作符在java中特殊之处在于两个地方&#xff1a; 1. 定义同种类型的变量时可以这样写&#xff1a; int i10,j20;//只有同种变量才行 2. 在for循环中的初始化条件和变化的步骤中对于同种类型的可以连接…

前端 js 非控件 使用标签打印机 打印二维码和文本_青岛Web前端(HTML5)面试题分享...

HTML5是前端开发人员必须掌握的技能之一&#xff0c;那么在面试时&#xff0c;面试官常问到的HTML5的问题有哪些呢&#xff1f;青岛HTML51、Doctype作用&#xff1f;严格模式与混杂模式如何区分&#xff1f;它们有何意义&#xff1f;答&#xff1a;告知浏览器的解析器&#xff…

SpringBoot整合SpringBatch实用简例

SpringBatch主要是一个轻量级的大数据量的并行处理(批处理)的框架。 作用和Hadoop很相似&#xff0c;不过Hadoop是基于重量级的分布式环境(处理巨量数据)&#xff0c;而SpringBatch是基于轻量的应用框架(处理中小数据)。 这里使用SpringBatch做了一个能跑的最简单例子&#xff…

安卓APP_ Fragment(1)—— Fragment概念、基础用法、动态变换、管理栈

摘自&#xff1a;安卓APP_ Fragment&#xff08;1&#xff09;—— Fragment概念、基础用法、动态变换、管理栈 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-15 23:32:31 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115716359 目录…

谷歌五笔输入法电脑版_“五笔输入法”打字速度更快,为什么却没啥人用?

现如今&#xff0c;随着国内经济水平的不断发展&#xff0c;电脑和手机都已经不再是稀罕玩意&#xff0c;因为现在国内有很多的厂家都在生产手机和电脑&#xff0c;导致这些电子产品的价格下降&#xff0c;所以我们很轻易就能够买得起这样的产品。而在手机、电脑普及之后&#…

安卓APP_ Fragment(2)—— Activity与Fragment的通信

摘自&#xff1a;安卓APP_ Fragment&#xff08;2&#xff09;—— Activity与Fragment的通信 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-16 17:23:44 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115743009 目录 Activity与Fragm…

java socket 判断Socket连接失效

要判断socket连接链路是否可用时&#xff0c;不能通过socket.isClosed() 和 socket.isConnected() 方法判断&#xff0c;要通过心跳包 socket.sendUrgentData(0xFF) 。 当第一次连接成功后&#xff0c; socket.isClosed() false, socket.isConnected()true&#xff0c;只有在自…

安卓APP_ Fragment(3)—— Fragment的生命周期

摘自&#xff1a;安卓APP_ Fragment&#xff08;3&#xff09;—— Fragment的生命周期 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-16 22:32:12 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115768202 目录 Fragment生命周期函数一…

安卓APP_ 布局(8) —— 基于 RecyclerView 的 ViewPager2翻页

摘自&#xff1a;安卓APP_ 布局&#xff08;8) —— 基于 RecyclerView 的 ViewPager2翻页 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-20 15:37:54 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115803077 viewpager2 是对Recycler…

安卓APP_ Fragment(4)—— Fragment + ViewPager2 模拟微信首页 (1)两者联动实现翻页

摘自&#xff1a;安卓APP_ Fragment&#xff08;4&#xff09;—— Fragment ViewPager2 模拟微信首页 &#xff08;1&#xff09;两者联动实现翻页 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-20 17:46:59 网址&#xff1a;https://blog.csdn.net/weixin_4474…

Linux网络编程(Socket)

目录网络编程&#xff08;Socket&#xff09;概述引入网络编程通识扫盲socket套接字套接字描述符字节序socket编程步骤Linux提供的API简析创建套接字即连接协议[socket]&#xff08;服、客&#xff09;绑定IP和端口[bind]&#xff08;服&#xff09;地址转换api字节序转换api监…

嵌入式开发概述(树莓派介绍)

目录嵌入式定义嵌入式芯片选型ARM架构ARM树莓派嵌入式定义 国内普遍认同的嵌入式系统的定义是以应用为中心&#xff0c;以计算机技术为基础&#xff0c;软硬件可裁剪&#xff0c;适应应用系统对功耗、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 嵌入式系统是软件和…

ubuntu 16gcc g++版本降级

打算在ubuntu16上编译linux3.4.66内核&#xff0c;但是遇到 In file included from include/linux/compiler.h:48:0, from include/linux/stddef.h:4, from include/linux/posix_types.h:4, from include/linux/types.h:17, from include/linux/page-flags.h:8, from kern…

android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...

文章转载自&#xff1a;iT之家原文链接&#xff1a;https://www.ithome.com/0/479/483.htm(IT之家3月25日消息) 谷歌今天宣布了一系列面向游戏开发者的新工具&#xff1a;Google Play Asset Delivery、Android性能调节器&#xff0c;Android GPU检查器和Cloud Firestore等&…

cURL库

一、cURL库可以做什么 1.cURL是一个文件传输工具&#xff0c;支持很多协议 二、cURL库的用法 1.初始化 $urlcurl_init() 2.设置选项 curl_setopt($url,CURLOPT_URL&#xff0c;"http://www.baidu.com") curl_setopt($url,string option,mixed value) 3.执行cURL会话 …

树莓派刷机

目录准备刷机重刷准备 SD卡&#xff08;一般16G以上&#xff0c;这里我用的8G&#xff09; 读卡器 Win32DiskImager&#xff08;将镜像烧到SD卡的软件&#xff09;&#xff0c;在这里下载&#xff1a;https://download.csdn.net/download/zhuguanlin121/18329615?spm1001.201…

linux3.4.2移植总结(s3c2440)

环境&#xff1a;Linux version 3.5.0-23-generic (builddkomainu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) ubuntu12 目标板&#xff1a;JZ2440 待移植内核&#xff1a;3.4.2 交叉编译器&#xff1a;arm-linux-gcc-4.3.2 1. make s3c2410_defconfig //使…