Viewpager的基本使用

Android ViewPager、ViewPager2的基本使用详解及区别 这里写自定义目录标题欢迎使用Markdown编辑器ViewPager2 + ItemViewViewPager2 + Fragment合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 阅读详情

1.需求

1.1实现以下功能

这里写图片描述

1.2 分析一下都有什么要求:

  1. 可以滑动的页面
  2. 导航栏,可以选择打开的页面
  3. 下标,需要随着页面改变而改变

2.实现

2.1使用viewPager,及使用PagerTabStrip,但发现使用PagerTabStrip并不能固定标题,故导航栏自己实现,而页面滑动使用viewpager

2.2主页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout 
            android:id="@+id/tab_bar"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal">

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/btn1"
            android:background="#fff"/>

        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/btn2"
            android:background="#fff"/>

        <Button
            android:id="@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/btn3"
            android:background="#fff"/>

    </LinearLayout>

    <!--使用shapeDrawable填充-->
    <TextView
        android:id="@+id/cursor"
        android:layout_width="wrap_content"
        android:layout_height="5dp"
        android:scaleType="matrix"
        android:background="@drawable/rect"
        android:clickable="false"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

    </android.support.v4.view.ViewPager>

</LinearLayout>

2.3子页面布局,只是一个TextView ,故不贴了

2.4shapeDrawable填充游标的背景颜色

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 设置填充色 -->
    <solid android:color="#FFB90F" />
</shape>

2.5页面滑动监听事件以及按钮的监听事件


//页面滑动监听事件
package com.example.myviewpager;

import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.TextView;

public class MyPageListener implements OnPageChangeListener {

    //距离
    private int kio;
    //移动的view
    private TextView view;
    //当前页面
    private int curPage=0;

    public MyPageListener() {
        // TODO Auto-generated constructor stub
    }

    public MyPageListener(TextView view,int kio) {
        // TODO Auto-generated constructor stub

        this.view = view;
        this.kio = kio;
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }
    /**
    fromXDelta:位置变化的起始点X坐标。
    toXDelta:位置变化的结束点X坐标。
    fromYDelta:位置变化的起始点Y坐标。
    toYDelta:位置变化的结束点Y坐标。
    **/
    @Override
    public void onPageSelected(int arg0) {

        Animation am = new TranslateAnimation(curPage*kio, arg0*kio , 0, 0);
        am.setDuration(300);
        am.setFillAfter(true);
        view.startAnimation(am);
        curPage = arg0;
    }

}
//按钮监听事件
package com.example.myviewpager;

import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class BtnListener implements OnClickListener {
    private ViewPager pager;

    public BtnListener() {
        // TODO Auto-generated constructor stub
    }
    public BtnListener(ViewPager v)
    {
        this.pager = v;
    }
    public void onClick(View v) {

        String text = ((Button)v).getText().toString();
        if(text.equals("btn1"))
        {
            pager.setCurrentItem(0);
        }
        if(text.equals("btn2"))
        {
            pager.setCurrentItem(1);
        }
        if(text.equals("btn3"))
        {
            pager.setCurrentItem(2);
        }
    }

}

2.6主activity

public class MainActivity extends Activity {

    private Button btn1,btn2,btn3;
    private ViewPager vPager;
    private List<View> vList;
    private TextView cursor;
    private MyPageListener pageListener;
    private BtnListener btnListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initButton();

        vList = new ArrayList<View>();

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


        vList.add(LayoutInflater.from(this).inflate(R.layout.view1_layout, null));
        vList.add(LayoutInflater.from(this).inflate(R.layout.view2_layout, null));
        vList.add(LayoutInflater.from(this).inflate(R.layout.view3_layout, null));


        MyViewPagerAdapter adapter = new MyViewPagerAdapter(vList);

        vPager.setAdapter(adapter);

        pageListener = new MyPageListener(cursor,getScreenWidth()/3);
        vPager.setOnPageChangeListener(pageListener);
        btnListener = new BtnListener(vPager);
        btn1.setOnClickListener(btnListener);
        btn2.setOnClickListener(btnListener);
        btn3.setOnClickListener(btnListener);
    }

    //初始化导航栏
    public void initButton()
    {
        btn1 = (Button)findViewById(R.id.btn1);
        btn2 = (Button)findViewById(R.id.btn2);
        btn3 = (Button)findViewById(R.id.btn3);
        cursor = (TextView)findViewById(R.id.cursor);

        btn1.setWidth(getScreenWidth()/3);
        btn2.setWidth(getScreenWidth()/3);
        btn3.setWidth(getScreenWidth()/3);
        cursor.setWidth(getScreenWidth()/3);

    }


    public int getScreenWidth()
    {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int screenW = dm.widthPixels;// 获取分辨率宽度
        return screenW;
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
android之ViewPager的使用 ViewPager是一个非常强大的 UI组件,应用非常广泛。它提供了多界面切换的效果,具体来说就是∶当前显示一组界面中的一个界面,当用户左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分,滑动结束后,界面自动跳转到当前选择的界面中。 下面用实例来说明如何使用。 和之前的其他控件一样,使用ViewPager也需要把ViewPager对应的控件加入布局文件中。在MainActivity对应的布局文件中添加 ViewPager 的代码如下∶ ... 阅读详情

相关推荐

ad23新版Geber导出-官方教程(22.11版本后)

AD23新版本geber文件导出(含官方教程)-22.11之后的版本均可用此教程

安和的博客 3万+

ViewPager的使用

ViewPager的使用。

A125679880的博客 3068

招行收款通SM2加密解密全流程解析:PHP开发者必看

本文详细解析了招商银行收款通服务中SM2加密解密的完整流程,特别针对PHP开发者提供了从密钥管理到签名验签的实战指南。涵盖国密算法基础、PHP环境配置、密钥安全存储及生产环境优化方案,帮助开发者快速实现高安全性的支付系统集成。

weixin_30632089的博客 651

ViewPager 的用法详解

现在很多浏览类型app都是viewpager + fragment + 自定义tab的组合,比如网易新闻,优酷等。 使用这种组合的好处: 可以在一个Activity中处理多个页面,方便用户操作,视图结构清晰。 一、 viewpager 对应的几个adapter PagerAdapter: 一般适配器,图片,view,Fragment都行。 FragmentPagerAdapter: 为

stormxz的博客 868

pyinstaller+scrapy打包出现错误:OSError: could not get source code

错误如下: Traceback (most recent call last): File "scrapy\utils\defer.py", line 55, in mustbe_deferred File "scrapy\core\spidermw.py", line 60, in process_spider_input File "scrapy\core\scraper.py", line 152, in call_spider File "scrapy\utils\misc.py

kin的博客 1760

保姆级教程:在ROS Noetic下,手把手教你将自定义A*全局规划器打包成插件(附避坑指南)

本文提供了一份详细的ROS Noetic下自定义A*全局规划器插件开发指南,涵盖从环境准备、算法优化到插件配置与调试的全流程。通过实战案例和避坑技巧,帮助开发者高效实现机器人导航中的全局路径规划,特别适合需要优化ROS导航栈的开发者。

weixin_29168675的博客 286

Android viewpager使用

介绍android viewpager的使用

qq_33782617的博客 7999

数据资产目录(SailCatalog)和数据地图(SailMap)

笔者接下来准备开发大数据平台(XSailboat)中的数据资产目录(SailCatalog)和数据地图(SailMap)相关的功能,本文用以记录笔者关于此部分功能的概念梳理和主体功能设计。

OkGogooXSailboat的博客 2328

ViewPager的介绍和使用

ViewPager一.ViewPager简介二.ViewPager使用三.翻页监听 一.ViewPager简介 ViewPger就是将多个View引用到Adapter中,在左右滑动时,切换不同的View视图 我们日常app中经常用到的滑动换页,大部分就是用它做的 ViewPager 直接继承了 ViewGroup,所以它是一个容器类,可以在其中添加其他的 view 类。 ViewPager ...

weixin_45533623的博客 3998

大疆2025八月份校招硬件工程师笔试真题A卷题目分享

大疆2025年笔试真题解析

weixin_63651698的博客 1569

Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程

干货来了,GTX IP核配置,搬砖全靠它~~

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

Android 之 ViewPager 的简单使用

ViewPager就是一个简单的页面切换组件,我们可以往里面填充多个View,然后我们可以左 右滑动,从而切换不同的View,我们可以通过setPageTransformer()方法为我们的ViewPager 设置切换时的动画效果,当然,动画我们还没学到,所以我们把为ViewPager设置动画 放到下一章绘图与动画来讲解!

leyang0910的博客 5565

066、AR 应用中虚拟物体漂移抖动?IMU 融合 + 光流追踪的视觉里程计优化方案

AR应用中虚拟物体漂移抖动优化方案 摘要:针对AR应用中虚拟物体漂移抖动问题,提出一种IMU融合与光流追踪的视觉里程计优化方案。关键点包括:1) 采用IMU预积分技术处理高频噪声,通过中值积分计算帧间相对运动约束;2) 使用金字塔LK光流追踪像素运动,通过中值偏差法剔除异常值;3) 构建10帧滑动窗口的紧耦合优化框架,将IMU预积分约束和光流重投影约束联合优化。实验表明,该方法有效解决了时间戳未对齐导致的"跳舞箭头"现象,在手机端实现稳定30fps的AR定位精度,漂移误差降低至厘米级。特别提醒:IMU与视觉

ai技术增长的博客 161

ViewPager的基本使用

ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view。我们首先来看看API对于这个类的表述: ? 1 2 3 Layout manager that allows the user to flip left and right through pages of data. You supp

u012398902的专栏 1548

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android viewpager的使用,ViewPager的基本使用

一、ViewPager:ViewPager是android-support-v4.jar包中的一个系统控件ViewPager继承自ViewGroupViewPager专门用以实现左右滑动切换View的效果二、ViewPager常用方法setAdapter(PagerAdapter adapter)建立与适配器的联系adapter:与ViewPager配合使用的适配器ViewPager.getCur...

weixin_34869021的博客 1040

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ViewPager 2 使用讲解

之前早有耳闻 Google 为我们提供新的控件来替换老旧的 ViewPager 进而解决一些不好解决的bug问题,巴拉巴拉一大堆,就是前因后果啥的…相信读者已经在“张鸿洋”大神、“郭霖”大神或者是其他Android 大佬的公众号那里看见了许许多多了,或许各位感觉很无聊了,笔者菜鸟,分析不了历史背景,也不是很懂源码,但是小菜鸟,可以带给位看官尝个鲜,教你怎么用,怎么上手哈,闲话不多说,我们步入正题。...

韩小呆的博客 3万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Android】ViewPager与ViewPager2之间的区别

ViewPager 和 ViewPager2 都是 Android 中用于实现滑动页面切换的控件,但ViewPager2是对ViewPager的改进和增强版本。

2301_79828182的博客 2241

ViewPager+Fragment的基本使用

ViewPager+Fragment viewPager简介 Android 3.0后引入的一个UI控件——ViewPager(视图滑动切换工具),实在想不到 如何来称呼这个控件,他的大概功能:通过手势滑动可以完成View的切换,一般是用来做APP 的引导页或者实现图片轮播。ViewPager就是一个简单的页面切换组件,我们可以往里面填充多个View,然后我们可以左 右滑动,从而切换不同的View。 Fragment Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕

qq_45622118的博客 5748

ViewPager和ViewPager2的简单使用,TabLayout与ViewPager2联用以及轮播图的实现。

ViewPager和ViewPager2的简单使用,TabLayout和ViewPager2的联用以及轮播图的实现代码。

m0_74000465的博客 1927

官方 Viewpager 升级版 - ViewPager2 实战

Google 在 `androidx` 组件包里增加了一个新的组件 `ViewPager2`,目前已经更新了两个 alpha 版本了。那么,和之前的 `ViewPager` 组件相比,有什么改进呢?查看[官方文档]

willwaywang6 3万+

ViewPager2的使用

Jetpack与ViewPager2 Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。 2018年Google推出了Jetpack架构组件,旨在帮助开发者轻松构建更稳定、更健壮、以及更可维护的应用程序。Jetpack为之前混乱的Android开发生态提供了一种更规范的解决方案,可以说是Google为了规范Android开发生态迈进的一大步。 Google对于Jetpack也是

钟小明的专栏 5171

【Android】ViewPager基本用法总结

ViewPager是 Android 中一个用于在同一屏幕上滑动不同页面(通常是左右滑动)的组件。它通常用于实现多页面滑动效果,比如应用的引导页、图片轮播、以及支持标签导航的界面。ViewPager与结合使用。是一个适配器,它负责为ViewPager提供页面内容。每个页面通常是一个Fragment,也可以是一个普通的View。

Patrick_yuxuan的博客 3529

ViewPager2与ViewPager的区别

该文章仅供参考,可以帮你梳理好编程思想

LZW_00007的博客 2251

Android中 ViewPager 和 ViewPager2 的区别

学习笔记ViewPager和 ViewPager2都是中实现滑动页面效果的控件,用于在一系列页面之间进行切换。ViewPager2是 ViewPager的升级版本,提供了更多功能和灵活性。本文将从各个方面详细对比这两个控件,帮助你理解它们的区别和使用场景。

2402_85226471的博客 1566

ViewPager及ViewPager的使用

1.首先准备布局<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" />2.准备数据源 LayoutInflater inflater=getLayoutInf

spring2335的博客 191
上一篇: 使用HorizontalScrollView实现侧滑ListView
下一篇: Java设计模式—观察者模式
cst_code
博客等级 码龄10年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值