布局搞定之后,定义一个适配器如下:

package com.wwj.viewpager;

import java.util.List;

import android.support.v4.view.PagerAdapter;

import android.view.View;

import android.view.ViewGroup;

/**

  • ViewPager适配器

  • @author wwj

*/

public class ViewPagerAdapter extends PagerAdapter {

// 界面列表

private List views;

public ViewPagerAdapter(List views) {

this.views = views;

}

@Override

public void destroyItem(ViewGroup container, int position, Object o
bject) {

container.removeView(views.get(position));

}

@Override

public int getCount() {

if (views != null) {

return views.size();

}

return 0;

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

container.addView(views.get(position)); // 把被点击的图片放入缓存中

return views.get(position); // 返回被点击图片对象

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return (arg0 == arg1);

}

}

适配器搞定之后,直接去Activity

package com.wwj.viewpager;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.os.Bundle;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.util.DisplayMetrics;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.Animation;

import android.view.animation.TranslateAnimation;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

ViewPager viewPager;

ViewPagerAdapter pagerAdapter;

View view1, view2, view3, view4; // 页面

List views; // Tab页面列表

ImageView img_cursor; // 指示图片

TextView tv_guid1, tv_guid2, tv_guid3, tv_guid4; // 页卡头标

int offset = 0; // 偏移量

int currIndex = 0; // 当前页卡编号

int bmpW; // 图片宽度

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initImageView();

initTextView();

view1 = (View) findViewById(R.layout.viewpager1);

view2 = (View) findViewById(R.layout.viewpager2);

view3 = (View) findViewById(R.layout.viewpager3);

view4 = (View) findViewById(R.layout.viewpager4);

LayoutInflater inflater = LayoutInflater.from(this);

view1 = inflater.inflate(R.layout.viewpager1, null);

view2 = inflater.inflate(R.layout.viewpager2, null);

view3 = inflater.inflate(R.layout.viewpager3, null);

view4 = inflater.inflate(R.layout.viewpager4, null);

views = new ArrayList();

views.add(view1);

views.add(view2);

views.add(view3);

views.add(view4);

pagerAdapter = new ViewPagerAdapter(views);

viewPager = (ViewPager) findViewById(R.id.viewpager);

viewPager.setAdapter(pagerAdapter);

viewPager.setCurrentItem(0);

viewPager.setOnPageChangeListener(new MyOnPageChangeListener());

}

/**

  • 初始化动画图片

*/

private void initImageView() {

img_cursor = (ImageView) findViewById(R.id.cursor);

bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.cursor)

.getWidth();

DisplayMetrics dm = new DisplayMetrics();

this.getWindowManager().getDefaultDisplay().getMetrics(dm);

int screenW = dm.widthPixels; // 获取手机屏幕宽度分辨率

offset = (screenW / 4 - bmpW) / 2; // 获取图片偏移量

// imageview设置平移,使下划线平移到初始位置(平移一个offset)

Matrix matrix = new Matrix();

matrix.postTranslate(offset, 0);

img_cursor.setImageMatrix(matrix);

}

/**

  • 初始化TextView控件,和注册监听器

*/

private void initTextView() {

tv_guid1 = (TextView) findViewById(R.id.tv_guid1);

tv_guid2 = (TextView) findViewById(R.id.tv_guid2);

tv_guid3 = (TextView) findViewById(R.id.tv_guid3);

tv_guid4 = (TextView) findViewById(R.id.tv_guid4);

tv_guid1.setOnClickListener(listener);

tv_guid2.setOnClickListener(listener);

tv_guid3.setOnClickListener(listener);

tv_guid4.setOnClickListener(listener);

}

OnClickListener listener = new OnClickListener() {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.tv_guid1:

viewPager.setCurrentItem(0);

break;

case R.id.tv_guid2:

viewPager.setCurrentItem(1);

break;

case R.id.tv_guid3:

viewPager.setCurrentItem(2);

break;

case R.id.tv_guid4:

viewPager.setCurrentItem(3);

break;

default:

break;

}

}

};

// 当页面滑动时,开始动画并跳出Toast

public class MyOnPageChangeListener implements OnPageChangeListener {

private int one = offset * 2 + bmpW; // 页面1到页面2的偏移量

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

ntItem(3);

break;

default:

break;

}

}

};

// 当页面滑动时,开始动画并跳出Toast

public class MyOnPageChangeListener implements OnPageChangeListener {

private int one = offset * 2 + bmpW; // 页面1到页面2的偏移量

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

Android UI--ViewPager扩展Tab标签指示,android开发网上购物app

相关文章

  1. 一、File类的使用

    目录 一、概念 二、创建类的实例 (一)常用构造器 1.构造器1(public File(String pathname)) 2.构造器2(public File(String parent,String child)) 3.构造器3(public File(File parent,…...

    2023/6/8 8:48:30
  2. 操作系统原理笔记

    系统 操作系统的概念功能与目标 操作系统定义 负责协调硬件, 软件等计算机资源的工作为上层应用程序, 用户提供简单易用的服务, 接口与环境是计算机中最接近硬件的软件 操作系统的功能 作为系统的管理者应该提供的功能 文件管理(打开文件夹) 内存管理(将数据装入内存) 处理…...

    2023/5/28 16:02:51
  3. DHCP工作原理

    DHCP工作原理图DHCP关键知识点DHCP服务器数据传输的端口为UDP67DHCP客户机数据传输的端口为UDP68客户机的源IP地址为:0.0.0.0客户机的目的IP地址:255.255.255.255DHCP过程详解发现阶段:DHCP客户机获取网络中DHCP服务器信息的阶段提供阶段:DHCP SERVER向DHCP客户机提供预分配…...

    2023/5/29 3:33:46
  4. 图床搭建——Typora+PicGo+Gitee实现图片上传

    前面讲到了图床搭建——TyporaPicGoGithub实现图片上传 图床搭建——TyporaPicGoGithub实现图片上传_惜洛-Jankin的博客-CSDN博客 今天讲讲如何用Gitee实现图片上传,首先还是需要用到PicGo软件,此处不再赘述,可以参考前文,下文介…...

    2023/6/9 7:21:01
  5. 【好玩】树莓派超声波测距(实测有效)

    树莓派超声波测距(实测有效)用具:代码:用具: 树莓派超声波测距模块 代码: import RPi.GPIO as GPIO import timeGPIO.setmode(GPIO.BCM) trig17 #发送接口,连接GPIO.17 echo27 #接收端口&…...

    2023/5/25 10:27:50
  6. Python番外篇:Pygame给CSDN博客1周年的我送上一个蛋糕

    hello,大家好,我是wangzirui32,今天我们来学习如何用Pygame给自己做一个博客生日贺卡。 前言 今天是我的博客1周年,从2021年1月17日到2022年1月17日,我经历了很多,也感受到了很多,我第一篇发布…...

    2023/5/27 12:37:44
  7. npm WARN npm npm does not support Node.js v17.3.1解决方法

    每次执行npm命令都会出现下面的警告,很恼火 在网上找了一些解决方法,都没有得到解决。 原因: 本质上就是npm和node不配套,需要升级npm 或者node。 查询npm和node匹配关系:以往的版本 | Node.js 网上找的方法&#…...

    2023/6/5 1:55:39
  8. matlab学习笔记②

    向量: 生成向量: ①直接输入:A [1,2,3,4,5,6] → 生成向量A,A是一维向量,具有六个分量 ②利用冒号表达式:x x0:step:xn →x0为首元素值,xn为为元素值限,step为每个元素与前一个…...

    2023/6/1 17:10:14
  9. 计算机网络(自顶向下)笔记

    本书是自顶向下进行的, 在第一章概述计算机网络的层次结构,从第二章开始从上到下一章介绍一层(大致), 最后是移动互联网/网络安全的内容 计算机网络中的每一层都具有一定的功能, 通过层间接口向上层提供服务, 通过调用下层接口实现一定的功能. 每一层的学习方式 原理 功能向…...

    2023/5/28 11:39:24
  10. VMware替换:森林正在生长

    随着全球范围内“云化”趋势不断普及,一些变化逐渐浮出水面。 在需求侧,“去IOE”浪潮(即去掉IBM小型机、Oracle数据库、EMC存储设备)正在朝去VMware、去AWS转向,国内的航空、教育、建筑、房地产、运输等领域&#xf…...

    2023/6/9 7:19:50
  11. C++ 11特性深入学习

    若一个类重载 符号 class_name& operator(const class_name& other) 通过函数返回一个临时的class来定义一个 已声明的 变量时 class_name c class_name(arg); 会进行较多的工作:先用arg的对应构造函数生成一个临时var, 然后重载函数将var作为参…...

    2023/5/25 19:47:59
  12. Java初步--JDK安装与环境搭建

    一、JDK的安装与卸载 下载JDK 1. 下载地址,点击进入: www.oracle.com/technetwork/java/javase/downloads/index.html 点击下载JDK,会出现如图所示的下载列表界面。首先,点击”Accept License Agreement”,然后选择…...

    2023/5/25 14:58:56
  13. Qt 编译项目集 时出现winmain/qtmain_win.cpp:97: undefined reference to `qMain(int, char**) 未定义主函数

    Qt 编译项目出现undefined reference to qMain[int, char**]未定义主函数未定义主函数 情况说明:一、问题截图二、问题分析三、解决办法情况说明: 是Qt项目使用 TEMPLATE subdirs 时,独立编译子项目时出现问题一、问题截图 二、问题分析 是…...

    2023/5/29 20:18:39
  14. vue插件发布到npm(消息弹窗插件)

    vue插件发布到npm(消息弹窗插件) 一、Demo描述 本次演示的是一个使用 vue 发布自己的插件——custom-message-song这是一个简单消息弹窗插件(为下一个重量级插件“自定义表单”插件发布做练习准备),这次就来小试牛刀,从插件的开…...

    2023/6/1 0:05:15
  15. mote: voice commenting for Google Docs-谷歌文档实时共享语音协作工具

    mote: voice commenting for Google Docs-谷歌文档实时共享语音协作工具-小白学堂...

    2023/5/17 13:46:21
  16. Redhat7.3安装wget及yum命令方法

    1、Wget安装 Redhat7.3最小安装wget命令也需要自己安装一下,wget下载地址:http://mirrors.163.com/centos/7/os/x86_64/Packages/wget-1.14-18.el7_6.1.x86_64.rpm 下载到/usr/local/soft目录后,执行rpm -ivh wget-1.14-18.el7_6.1.x86_64.…...

    2023/6/5 1:09:18
  17. 王垠 40行代码

    文章摘录自: 王垠的40行代码,究竟diao在哪里-阿里云开发者社区 王垠是谁? 不用我说了吧!!! 别傻谈,亮码瞧! ;; A simple CPS transformer which does proper tail-call and does not;; duplicate contexts for if-expressions.;; author: Yin Wang (yw21cs.indi…...

    2023/6/3 18:08:25
  18. 10分钟教你写出 坦克大战【无敌版】

    导读 最近读到一位大佬的游戏文章之后,手痒难耐就想自己也写一个小游戏。苦于没有游戏素材在网上搜也都是付费的,我就随便写了一点点来给自己解解馋。😗 好了废话不多说我们现在先试一下游戏效果。不好玩也不要说出来,嘻嘻嘻。后…...

    2023/6/3 6:35:10
  19. Nginx反向代理中使用proxy_redirect重定向url

    在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置了。proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改!!语法:proxy_redirect [ default|off|redirect replacement ];默认:proxy_…...

    2023/6/5 14:15:29
  20. FLINK-CDC之sql方式的应用(mysql篇)

    1、mysql中创建表,注意,mysql要开启binlog,否则报错 CREATE TABLE `cdc_user` ( `id` BIGINT(11) NOT NULL, `name` VARCHAR(50) NULL DEFAULT NULL COLLATE utf8mb4_bin, `type` VARCHAR(50) NULL DEFAULT NULL COLLATE utf8mb4_bin, `desc` TEXT NULL DEF…...

    2023/5/31 23:17:50

最新文章

  1. react设计模式,jsx

    1.修改配置项: eject:暴露配置项!!!一旦暴露了就无法还原回去 会报错。这个错误:我们刚才把代码改了,在暴露之前,先让我们把代码提交到git历史区保留下来—防止暴露后的代码覆盖了我们该的代码 …...

    2023/6/9 13:13:25
  2. 2023免联考双证1年学制的中国人民大学与加拿大女王大学金融硕士,别错过

    就像上个世纪,有个中专或者师范毕业学历就感觉光宗耀祖了一样。可当下,即便你是研究生学历,在企业也并非是最有发展的,因为硕士研究生已经成为进入职场的基本条件了。如果你的学历还有所欠缺,那么免联考双证1年学制的中…...

    2023/6/9 13:13:15
  3. MySQL底层数据结构

    1、引入 一个sql语句在mysql中究竟是如何运行的?又应该通过怎样的方式去查找我们要找的数据?这里就涉及到几种存储数据的算法; 可以做索引的数据结构有数组、链表、二叉搜索树和B树(B-树、B树)。 2、各种数据结构 …...

    2023/6/9 13:12:57
  4. taobao平台上关键字的API接口接入说明

    淘宝API接口是一个丰富的接口库,提供了各种各样的接口供开发者使用。满足多语言开发。以下是一些常见的淘宝API接口及其代码示例。 1. 搜索商品API接口 该API提供了关键字搜索淘宝商品的功能,可以使用各种编程语言来访问。以下代码段展示了使用Python来…...

    2023/6/9 13:12:39
  5. JDK8-1-Lambda表达式(3)-函数式接口

    JDK8-1-Lambda表达式(3)-函数式接口 有且仅有一个抽象方法的接口称为函数式接口,上文 中 java.util.function.Predicate 接口就是一个函数式接口,Java 8中引入的函数式接口定义在 java.util.function 包下 java.util.function.P…...

    2023/6/9 13:12:09
  6. 在webpack中使用Eslint

    一、Eslint介绍 要在webpack中使用Eslint首先我们先了解下什么是Eslint 1. 什么是Eslint ESLint是一个用于在JavaScript代码中发现和报告问题的静态代码分析工具。它可以检测常见的编码错误,如拼写错误、变量未声明、使用未定义的变量等,还可以检测代…...

    2023/6/9 13:11:58
  7. 过五关斩六将,欧科云链荣膺2023安博会“创新产品优秀奖”

    6月7日,由中华人民共和国公安部指导、中华人民共和国商务部批准,公安部主管的中国安全防范产品行业协会主办和承办的2023中国国际社会公共安全产品博览会(以下简称:安博会)正式开幕。 此次安博会,欧科云链携…...

    2023/6/9 13:11:30
  8. 【大数据之路5-2】Hive 全调优

    Hive 全调优 1. 调优概述2. 调优具体细节1. Hive 建表设计层面1. 利用分区表优化2. 利用分桶表优化3. 选择合适的文件存储格式4. 选择合适的压缩格式2. HQL 语法和运行参数层面1. 查看 Hive 执行计划2. 列裁剪3. 谓词下推4. 分区裁剪5. 合并小文件6. 合理设置 MapTask 并行度7.…...

    2023/6/9 13:11:10
  9. 《计算机组成原理》期末考试复习提纲+手写练习题+知识点总结(10个考点总结梳理+作业测试手写详细解答)

    待完善 (一)给出一个分别用补码和 IEEE754 法表示的 32 位数,如何求真值? (二) 给定两个定点小数的真值,如何求原码补码变形补码(扩展2个符号位,用于溢出判断)? 经典例…...

    2023/6/9 13:10:52
  10. 6.9 条件变量的使用及注意事项

    目录 条件变量 使用步骤: 初始化: 生产资源线程: 开始产生资源 消费者线程: 条件变量 应用场景:生产者消费者问题,是线程同步的一种手段。 必要性:为了实现等待某个资源,让线…...

    2023/6/9 13:10:25
  11. 安装Redis三主三从

    安装Redis 下载地址:https://redis.io/download/#redis-downloads 安装过程 cd /redis/redis-6.0.5make install修改配置文件 vim redis.confdaemonize yes dir "/data/soft/redis-7.0.11/6379/" cluster-enabled yes cluster-config-file "/da…...

    2023/6/9 13:10:10
  12. 市场类型与完全竞争市场

    短期完全竞争市场 区分市场类型的几条标准: 生产者的数量商品的同质性(差异化程度)进出市场的障碍信息是否完全市场类型: 完全垄断寡头垄断垄断性竞争完全竞争完全竞争市场的特征: 企业:数目多&规模小产品:同质化进出:自由 完全竞争市场上的企业是价格接受者最优产…...

    2023/6/9 13:09:51
  13. 互联网摸鱼日报(2023-06-09)

    互联网摸鱼日报(2023-06-09) InfoQ 热门话题 阿里大模型又有新进展:时间、空间可控的视频生成模型VideoComposer正式问世 趣丸科技媒体算法负责人马金龙确认出席 ArchSummit 深圳 百度智能云技术委员会主席王耀确认担任QCon联席主席并将发表主题演讲 继Stabilit…...

    2023/6/9 13:09:38
  14. ansible:command not foundnon-zero return code 解决方法

    问题现象 使用ansible命令行执行远程命令 使用command模块,出现报错:[Errno 2] No such file or directory 一样的命令换shell模块,出现报错:/bin/sh: ifconfig: command not foundnon-zero return code 问题原因 通过shell模块…...

    2023/6/9 13:09:24
  15. 拖拽(QT)

    一、拖放(Drag and Drop)的概念 拖放提供了一种简单的可视化机制,用户可以使用该机制在应用程序之间和内部传输信息。 拖放在功能上类似于粘贴板机制。 二、拖放类 这些类处理拖放和必要的mime类型编码和解码。 QDrag: 支持…...

    2023/6/9 13:08:47
  16. CRM系统排行榜TOP10——2023年度

    在当今竞争激烈的市场环境中,CRM客户系统是企业必备的管理工具,它可以帮助企业管理客户数据,优化业务流程,实现业绩增长。那么有哪些优秀的CRM系统呢?下面请看全球2023年CRM管理系统十大排行榜。 全球2023年CRM管理系…...

    2023/6/9 13:07:35
  17. 线程池源码解读及原理

    前言 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不过年轻人,升迁也无望,于是拿着手里的一些积蓄,回老家转行创业。他选择了洗浴行业,开一家洗浴中心,没错,一…...

    2023/6/9 13:07:19
  18. Lambda表达式 函数式接口 Stream流

    目录 一. Lambda表达式 1. 函数式编程思想概述 2. Lambda的优化 3. Lambda的格式 标准格式: 参数和返回值: 省略格式: 4. Lambda的前提条件 二. 函数式接口 1. 概述 格式 FunctionalInterface注解 2. 常用函数式接口 Supplier接口 Consumer接口 Function接口 P…...

    2023/6/9 13:07:02
  19. 【Android】WMS(一)Window的类型和标志

    Window、WindowManager、WMS区别 Window: Window 是 Android 中的一个视图容器,代表整个屏幕或 Activity 的一部分。每个 Window 都有自己的 Surface 对象,Surface 对象具有绘制和渲染功能,可以显示 View 和其他元素。在 Androi…...

    2023/6/9 13:06:45
  20. Meetup 报名|06.17 StarRocks Friends 与你相约上海

    StarRocks & Friends 是由 StarRocks 社区发起的城市线下 meetup,旨在联合社区与行业的专家小伙伴们分享基于 StarRocks 的最佳实践、大数据分析的前沿技术和 StarRocks 生态融合等热门话题。 不远千里奔赴,只为与你相聚。这个夏天,让我们…...

    2023/6/9 13:06:31