ViewPager2与TabLayout的简单使用

ViewPager2与TabLayout的简单使用

  1. MainActivity.java
public class MainActivity extends AppCompatActivity {private ViewPager2 mViewPager;private TabLayout mTabLayout;private int[] icons = new int[]{R.drawable.icon1, R.drawable.icon2, R.drawable.icon3, R.drawable.icon4};private String[] iconDes = new String[]{"白", "黑", "绿", "紫"};private ImageView circle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);circle = findViewById(R.id.circle);initView();}private void initView() {mViewPager = findViewById(R.id.vp2);List<ShowBigIdBean> list = new ArrayList<>();list.add(new ShowBigIdBean(R.drawable.img1, R.drawable.icon1, "白"));list.add(new ShowBigIdBean(R.drawable.img2, R.drawable.icon2, "黑"));list.add(new ShowBigIdBean(R.drawable.img3, R.drawable.icon3, "绿"));list.add(new ShowBigIdBean(R.drawable.img4, R.drawable.icon4, "紫"));ViewPagerAdapter adapter = new ViewPagerAdapter(this, list);mViewPager.setAdapter(adapter);initTabLayout();}private void initTabLayout() {mTabLayout = findViewById(R.id.tab_layout);mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {tab.setIcon(R.drawable.icon2);}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});TabLayoutMediator mediator = new TabLayoutMediator(mTabLayout, mViewPager, new TabLayoutMediator.TabConfigurationStrategy() {@Overridepublic void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {tab.setCustomView(getViewAtI(position));}});mediator.attach();}private View getViewAtI(int position) {View view = getLayoutInflater().inflate(R.layout.item_icon_layout, null, false);ImageView imageView = view.findViewById(R.id.icon);TextView textView = view.findViewById(R.id.icon_des);imageView.setImageResource(icons[position]);textView.setText(iconDes[position]);return view;}
}
  1. activity_main.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"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.viewpager2.widget.ViewPager2android:id="@+id/vp2"android:layout_width="250dp"android:layout_height="450dp"android:layout_centerHorizontal="true"android:layout_marginTop="50dp" /><com.google.android.material.tabs.TabLayoutandroid:id="@+id/tab_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="100dp"app:tabRippleColor="#00000000"app:tabIndicatorColor="#00000000" /></RelativeLayout>
  1. ViewPagerAdapter.java
public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.MyViewHolder> {private Context mContext;private List<ShowBigIdBean> mList;public ViewPagerAdapter(Context context, List<ShowBigIdBean> list) {mContext = context;mList = list;}@NonNull@Overridepublic MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(mContext).inflate(R.layout.item_img, parent, false);return new MyViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull MyViewHolder holder, int position) {holder.imageView.setImageResource(mList.get(position).getBigPicture());}@Overridepublic int getItemCount() {return mList.size();}class MyViewHolder extends RecyclerView.ViewHolder {private ImageView imageView;public MyViewHolder(@NonNull View itemView) {super(itemView);imageView = itemView.findViewById(R.id.img);}}
}
  1. ShowBigIdBean.java
public class ShowBigIdBean {public ShowBigIdBean(int bigPicture, int icon, String iconTitle) {this.bigPicture = bigPicture;this.icon = icon;this.iconTitle = iconTitle;}private int bigPicture;private int icon;private String iconTitle;public int getBigPicture() {return bigPicture;}public void setBigPicture(int bigPicture) {this.bigPicture = bigPicture;}public int getIcon() {return icon;}public void setIcon(int icon) {this.icon = icon;}public String getIconTitle() {return iconTitle;}public void setIconTitle(String iconTitle) {this.iconTitle = iconTitle;}
}
  1. item_img.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tool="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/img"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>
  1. item_icon_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tool="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/icon"android:layout_width="40dp"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_marginTop="20dp" /><ImageViewandroid:id="@+id/circle"android:visibility="gone"android:layout_width="40dp"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_marginTop="20dp"android:background="@drawable/item_circle_shape" /><TextViewandroid:id="@+id/icon_des"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/icon"android:layout_centerHorizontal="true"android:layout_marginTop="10dp"android:textColor="@color/black"android:textSize="15sp"tool:text="" /></RelativeLayout>
  1. item_circle_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="250dp" /><solid android:color="#00000000" /><stroke android:color="#CD7F32" android:width="1dp"/>
</shape>

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

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

相关文章

如何进行无线网络渗透测试?

今天我们将继续深入探讨Kali Linux的应用&#xff0c;这次我们将重点介绍如何使用Kali Linux进行无线网络渗透测试。无线网络渗透测试是评估无线网络安全性的重要步骤&#xff0c;而Kali Linux作为一款专业的渗透测试发行版&#xff0c;提供了丰富的工具来帮助你进行这项任务。…

c++中const修饰成员函数的问题

问题引入&#xff1a; 看下面这一段代码&#xff1a; class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year <&…

面试热题(全排列)

给定一个不含重复数字的整数数组 nums &#xff0c;返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 先在这里说明一下排列和组合的区别? 组合&#xff1a;是指从一…

前端三剑客

三剑客 万维网联盟&#xff08; World Wide Web Consortium &#xff09;&#xff0c;创建于1994年10月&#xff0c;主要工作是对 web 进行标准化。 ​ 该组织定义了网页的开发需要如下3门技术&#xff1a; ​ - HTML:定义网页的结构 - CSS: 定义网页的表现&#xff0c;样式 -…

开源数据库Mysql_DBA运维实战 (名词解释)

SQL&#xff08;Structured Query Language 即结构化查询语言&#xff09; SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统&#xff0c;SQL语言由IBM开发。 SQL语言分类&#xff1a; DDL语句 数据库定义语言&#xff1a;数据库、表、视图、索引、存储过程…

Steam 灵感的游戏卡悬停效果

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Steam 灵感的游戏卡悬停效果</title><style>* {margin: …

构建高效外卖系统平台:从需求到实现

随着科技的不断进步和人们生活节奏的加快&#xff0c;外卖成为了越来越多人的饮食选择。为了满足这一需求&#xff0c;开发一套高效的外卖系统平台变得尤为重要。本文将从需求分析开始&#xff0c;逐步引导您了解如何开发一套完整的外卖系统平台。 第一步&#xff1a;需求分析…

分类预测 | MATLAB实现EVO-CNN多输入分类预测

分类预测 | MATLAB实现EVO-CNN多输入分类预测 目录 分类预测 | MATLAB实现EVO-CNN多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现EVO-CNN多输入分类预测 2.代码说明&#xff1a;量谷优化卷积神经网络的数据分类预测&#xff1a;要求于Matlab …

【hadoop】windows上hadoop环境的搭建步骤

文章目录 前言基础环境下载hadoop安装包下载hadoop在windows中的依赖配置环境变量 Hadoop hdfs搭建创建hadfs数据目录修改JAVA依赖修改配置文件初始化hdfs namenode启动hdfs 前言 在大数据开发领域中&#xff0c;不得不说说传统经典的hadoop基础计算框架。一般我们都会将hadoo…

计算机视觉目标检测性能指标

目录 精确率&#xff08;Precision&#xff09;和召回率&#xff08;Recall&#xff09; F1分数&#xff08;F1 Score&#xff09; IoU&#xff08;Intersection over Union&#xff09; P-R曲线&#xff08;Precision-Recall Curve&#xff09;和 AP mAP&#xff08;mean…

Leetcode-每日一题【剑指 Offer 30. 包含min函数的栈】

题目 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中&#xff0c;调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack…

【mysql】事务的四种特性的理解

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

TOMCAT基础

tomcat是一个基于Java开发的&#xff0c;开放源代码的web应用服务器。它可以解析html页面中的java代码&#xff0c;执行动态请求&#xff0c;实现动态页面。核心功能是将收到的http请求处理并转发给适当的servlet来处理&#xff0c;然后将响应返回给客户端。 优点 1&#xff0c…

Django实现音乐网站 ⑼

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是后台对专辑、首页轮播图原有功能的基础上进行部分功能实现和显示优化。 目录 专辑功能优化 新增编辑 专辑语种改为下拉选项 添加单曲优化显示 新增单曲多选 更新歌手专辑数、专辑单曲数 获取歌手专辑数 保…

【并发编程】自研数据同步工具的优化:创建线程池多线程异步去分页调用其他服务接口获取海量数据

文章目录 场景&#xff1a;解决方案 场景&#xff1a; 前段时间在做一个数据同步工具&#xff0c;其中一个服务的任务是调用A服务的接口&#xff0c;将数据库中指定数据请求过来&#xff0c;交给kafka去判断哪些数据是需要新增&#xff0c;哪些数据是需要修改的。 刚开始的设…

Character Animation With Direct3D 读书笔记

角色动画简介 2D动画&#xff1a;循环播放多张图片 3D动画&#xff1a; 骨骼动画、变形动画 DirectX入门 Win32 应用程序 Application类&#xff1a;处理主程序循环&#xff0c;图形设备的初始化 Init&#xff1a;加载资源并创建图形设备Update&#xff1a;更新游戏世界&am…

Vue中子组件修改父组件传来的Prop值

vue中子组件不能直接修改父组件传来的prop值&#xff0c;Prop 是一种传递数据的机制&#xff0c;父组件通过 Prop 向子组件传递数据&#xff0c;子组件通过 Props 接收父组件传递过来的数据&#xff0c;这些数据被封装成一个个解构体形式的对象&#xff0c;不能直接进行修改。这…

React 18 更新 state 中的对象

参考文章 更新 state 中的对象 state 中可以保存任意类型的 JavaScript 值&#xff0c;包括对象。但是&#xff0c;不应该直接修改存放在 React state 中的对象。相反&#xff0c;当想要更新一个对象时&#xff0c;需要创建一个新的对象&#xff08;或者将其拷贝一份&#xf…

图像去雨、去雪、去雾论文学习记录

All_in_One_Bad_Weather_Removal_Using_Architectural_Search 这篇论文发表于CVPR2020&#xff0c;提出一种可以应对多种恶劣天气的去噪模型&#xff0c;可以同时进行去雨、去雪、去雾操作。但该部分代码似乎没有开源。 提出的问题&#xff1a; 当下的模型只能针对一种恶劣天气…

【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】

文章目录 GCC likely与unlikely 介绍linux 内核中的 likely/unlikely上篇文章:ARM 嵌入式 编译系列 4 – GCC 编译属性 __read_mostly 介绍 下篇文章: ARM 嵌入式 编译系列 4.2 – GCC 链接规范 extern “C“ 介绍 GCC likely与unlikely 介绍 likely 和 unlikely 是GCC编译器…