Android滑动效果的实现 ViewPager+Fragment

Fragment中嵌套(Fragment+ViewPager)完整Demo 该Demo为Fragment中嵌套(Fragment+ViewPager),在实际的项目中要注意Activity和Fragment的生命周期,以及它们随时可能被销毁的情况。 立即下载

我们在使用手机软件的时候,经常会用到的一个功能是活动切换页面,今天我就给大家详细的介绍怎样去实现。
实现一个功能肯定要有界面,有界面肯定要有控件,下面我先来介绍用到的控件。
(一)ViewPager
ViewPager就是一个简单的页面切换组件,我们可以往里面填充多个View,然后我们可以左 右滑动,从而切换不同的View。
(二)Fragment
Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段!

好了用到的控件已经说完了,在进入实战之前,先来看看效果图:
这里写图片描述
这个呢不光是可以滑动切换,同时单击上边的导航栏也可以切换到对应的页面,下面进行代码演示。

首先先来看看项目结构
这里写图片描述

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context="android.medal.cn.hd.MainActivity">

    <android.support.design.widget.TabLayout
        android:id="@+id/hd_tablayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/hd_viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

fragment1.xml——-fragment4.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">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="第一个页面"
        android:textAlignment="center"
        android:textSize="50sp" />
</LinearLayout>

因为fragment都是一样的所以不全贴出来了

MainActivity

public class MainActivity extends AppCompatActivity {

    private TabLayout fragmentTabHost;
    private ViewPager personViewpager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }

    protected void initView() {
        fragmentTabHost = (TabLayout) findViewById(R.id.hd_tablayout);
        personViewpager = (ViewPager) findViewById(R.id.hd_viewPager);
    }

    protected void initData() {
        List<Fragment> fragments=new ArrayList<>();
        fragments.add(new Fragment1());
        fragments.add(new Fragment2());
        fragments.add(new Fragment3());
        fragments.add(new Fragment4());
        MyAdapter adapter=new MyAdapter(getSupportFragmentManager(),fragments);
        personViewpager.setAdapter(adapter);
        fragmentTabHost.setupWithViewPager(personViewpager);
    }

    private class MyAdapter extends FragmentPagerAdapter {

        private List<Fragment> fragments;
        private String[] mTabTitle={"第一个页面", "第二个页面", "第三个页面", "第四个页面"};

        public MyAdapter(FragmentManager fm, List<Fragment> fragments) {
            super(fm);
            this.fragments=fragments;
        }

        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }

        @Override
        public int getCount() {
            return 4;
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return mTabTitle[position];
        }
    }
}

注意 :MyAdapter是MainActivity的一个内部类

fragment1——fragment4

public class Fragment1 extends BaseFragment{
    @Override
    protected void initView(View view) {

    }

    @Override
    protected int getLayoutId() {
        return R.layout.fragment1;
    }

    @Override
    protected void initData() {

    }
}

因为fragment中并没有其他控件,也没有添加其他的功能,所以fragment中没有内容。

BaseFragment

public abstract class BaseFragment extends Fragment {
    protected Context mContext;
    private void getBaseContext(){this.mContext=getContext();}
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(getLayoutId(),null);
        getBaseContext();
        initView(view);
        return view;
    }
    protected abstract void initView(View view);
    protected abstract int getLayoutId();
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initData();
    }
    protected abstract void initData();
}

到这里呢,我已经将我全部的代码都帖出来了。运行一下你就可以实现上面的效果图。

viewpager+fragment的使用Demo 试用于各类型的APP框架滑动与点击切换并行 立即下载

相关推荐

ViewPager+fragment的一个demo,顶部有导航栏,实现懒加载

懒加载简介:使用viewpager+fragment作为应用大的布局时,viewpager会通过setOffscreenPageLimit来设置预加载的项目, 不设置setOffscreenPageLimit,则默认为1(设置0无效,可以查看该方法源码知道),也就是当我们打开应用看到的时候fragment01时, 实际上其他fragment(例如fragment02)也进行了加载,只不过没有显示出来罢了,但是这样就造成了不必要的资源浪费 (例如,fragment02没有显示,但是却进行了大量的网络加载操作)。 基于上述情况,就有了懒加载方式的诞生 (即只加载当前显示页面且只加载一次,滑动到其他页面时才加载其他页面数据,当再滑动到已加载过数据的页面时不再进行数据加载操作 ,若想要刷新数据,再调用相应的加载数据方法就好了)

android横向滑动选项卡,ViewPager+Fragment实现水平滑动选项卡【Android】

每一次量体重。轻了就对自己说:瘦了。重了就对自己说:胸部大了。选项卡大家并不陌生,即实现多视图选项切换。因为选项卡能够减少同一个页面多视图操作的臃肿,所以选项卡在APP中应用十分广泛,其中ViewPager能够很好地适应Fragment,因此ViewPager+Fragment也是很多开发者常用地一种实现水平滑动选项卡方式。本小节将教会大家如何使用ViewPager+Fragment实现水平滑动选...

weixin_39575007的博客 788

Demo(viewPager+Fragment+DrawerLayout)完美结合,可以无限复用

Demo(viewPager+Fragment+DrawerLayout)完美结合,可以无限复用

android 横向选项卡,ViewPager+Fragment实现多屏选项卡水平切换功能【Android】

精辟句:我不想,我不想,不想上班,我只想,我只想,睡觉拿工资吃大餐……之前在【Android】ViewPager+Fragment实现水平滑动选项卡这篇文章中,已经讲解了ViewPager+Fragment实现水平滑动选项卡,但是这篇文章当中选项卡的个数不能太多,只能显示一屏。但是在实际开发当中会出现一屏并不能显示全部的选项卡情况,本篇文章将会给大家讲解ViewPager+Fragment实现多屏...

weixin_39833763的博客 530

android viewpager+fragment做主界面(超容易理解的demo)

笔者之前已经写过了关于viewpager的demo,但是之前是通过将Activity转化为view,然后放入viewpager实现的,具体操作中有时候还是不如fragment方便。 之前的viewpager demo的地址:http://blog.youkuaiyun.com/double2hao/article/details/50183567 主要实现的功能与之前的一样: 1、滑动的同时改变标题栏 2、点击标题栏的同时滑动 3、点击fragment中的button能有toast提示

Linux内核模块开发实战指南(2025版)

2025年Linux内核模块开发迎来革命性突破!本文将从零开始手把手教你构建可动态加载的AI加速驱动模块,揭秘最新内核特性与开发技巧,更包含独家性能调优方案与跨架构移植秘籍。文末附赠价值百万的调试脚本,助你轻松突破开发瓶颈!

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 1806

Android ViewPager+Fragment滑动选项卡,tab点击选项卡

有一段时间一直再研究这个,自Android 3.0以后,很少开发者再用以前的TabWidget控件了。那种效果不是很好,也不能滑动。后来陆续出现了各种各样滑动选项卡,每种的出现都各有优势吧。但我还是推荐ViewPager+Fragment滑动选项卡,tab点击选项卡。因为横屏或者竖屏效果都还不错,针对这种效果,还有一种开源框架的出现。接下来会有所介绍。 转载请注明出处:http://blog

xky11033224的博客 766

DEMATEL-ISM模型的Python实现——方法介绍以及代码复现

本文参考文献与网络资料,对DEMATEL-ISM方法做了介绍何步骤描述,并给出Python代码进行了计算和绘图。

cros1的博客 2万+

android实现滑动菜单,Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版...

1 packagecom.hyl.acccountbookdemo;23 importandroid.graphics.Color;4 importandroid.os.Bundle;5 importandroid.support.v4.app.Fragment;6 importandroid.support.v4.app.FragmentManager;7 importandroid.suppo...

weixin_36258014的博客 362

IROS 2025机器人技术解析:从诡异设计到硬核应用

机器人技术正从传统的结构化环境应用,迈向复杂非结构化场景的深度交互。其核心原理在于通过仿生设计、多模态感知与智能控制算法,赋予机器人类似生物的适应性与交互能力。这一技术演进的价值在于突破传统机器人在极端环境、精密操作和自然交互中的瓶颈。例如,结合深度强化学习的全身动力学控制,使机器人能在废墟、管道等复杂地形中自主导航;而软体机器人技术则通过材料变形实现安全、柔顺的抓取操作。这些技术最终服务于极端环境巡检、精密装配和高端陪护等刚性应用场景,推动机器人从功能实现迈向与环境、人进行深度、智能交互的新阶段。

weixin_34006468的博客 448

STM32L476低功耗实战:LPTIM精准定时唤醒STOP2模式与系统级功耗优化

本文深入探讨了STM32L476低功耗实战技巧,重点解析了LPTIM精准定时唤醒STOP2模式的配置与优化。通过详细的步骤指南和实战经验分享,帮助开发者实现系统级功耗优化,特别适合电池供电设备开发。文章涵盖LPTIM1定时器配置、STOP2模式进入流程及常见问题排查,助力将整机功耗降至8.2uA级别。

weixin_33686714的博客 435

Android Fragment实践- ViewPager +Fragment实现页面滑动效果

Android系统中提供的ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期。最常用的场景是,在一个页面内,可以进行左右滑动,从而显示不同的内容。 本篇给出一个典型的ViewPager + Fragment,来实现这种滑动。...

记录和分享程序人生的点点滴滴 2481

2025年再论 SAP ABAP 系统经典的三层架构的理解

【摘要】本文基于作者19年SAP开发经验,深入解析SAP经典三层架构在S/4HANA时代的演进与实践。数据库层从多数据库支持转向HANA专属,通过SQLScript实现计算下推;应用层以ABAP平台为核心,融合OData和RAP等现代开发范式;表现层从SAP GUI过渡到Fiori Launchpad为主导。文章通过真实案例(如月末关账优化、ATP检查改造)展示三层协作如何提升性能,并探讨了本地/云/混合部署策略。全文贯穿SAP官方技术文档参考,为开发者提供体系化架构认知和实践指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 754

android studio 滑动菜单,Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果

本文为大家分享了Android Studio实现滑动菜单Tab效果的具体代码,供大家参考,具体内容如下描述:之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的;最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发;APP已经完善了一部分,现在就想把已经做好的功能整理一下,记录下来。效果图:可以手动滑动菜单也可以通过点击头部菜单进行切...

weixin_30308101的博客 1456

MIL图像处理那些事:MIL的安装和MIL工具箱

MIL图像处理那些事:MIL的安装和测试,如何用C#使用MIL

十多年IT经验,专注机器视觉,智能制造半导体行业 5273

毕设-MobileNetV4:给YOLOv8装上轻量化“引擎”——通用瓶颈与C2f融合的实战教程

本文介绍了一种将MobileNetV4与YOLOv8结合的目标检测模型轻量化方案。MobileNetV4通过通用瓶颈(UB)结构实现多任务适配,其核心改进包括动态卷积核、注意力机制和多路径特征聚合,显著提升特征提取能力。作者详细阐述了如何在YOLOv8框架中实现MobileNetV4的通用瓶颈模块,包括"膨胀-卷积-注意力-压缩"的流程设计,并构建完整的backbone网络。该方案通过融合MobileNetV4的轻量化优势与YOLOv8的高效检测架构,在移动设备上实现了精度与速度的良好平

FJN110的博客 503

Android ViewPager和Fragment实现顶部导航界面滑动效果

在项目中,我们常常需要实现界面滑动切换的效果。例如,微信界面的左右滑动切换效果。那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果。 一. ViewPager 官方API 首先我们来看一下ViewPager官方给出的解释,如图: 具体意思如下: Layout 管理器允许用户可以在页面上,左右滑动来翻动页面。你可以考虑

xyjikl 1368

【气候极端指数】MATLAB计算各种气候极端指数

简介各类气候极端指数,及其MATLAB计算代码

WW、forever的博客 4917

android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...

在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android-support-v4.jar、细节无法控制。不过现在情况已经不一样了,android-support-v4中提供了很多实用的功能,以至于现在新建一个android工程默认都会导入这个jar包。那我们就...

weixin_39587113的博客 656

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android ViewPager和Fragment实现仿微信导航界面及滑动效果

1 先看看实现的效果: 实现ViewPager+Fragment的页面滑动和底部导航原理 主布局文件如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:la

happy_horse的博客 3638

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android ViewPager + Fragment 实现滑动标签效果

一般的Tab标签效果就是点击下方标签,切换上方视图,现在常见的大多不是单独的标签效果,而是滑动标签,即页面可以直接左右滑动切换,也可以通过下方的tab标签点击切换。我分享下自己的学习心得。首先上个效果图: 这个页面主要有三部分组成:上方的标题栏,中间一个ViewPager,下方一个Tab标签。 效果实现大体分为以下几步: 1)ViewPager中显示是是fragment,所以

Hornsey的博客 827

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android viewpager 切换fragment,Android App中使用ViewPager+Fragment实现滑动切换效果

在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android-support-v4.jar、细节无法控制。不过现在情况已经不一样了,android-support-v4中提供了很多实用的功能,以至于现在新建一个android工程默认都会导入这个jar包。那我们就...

weixin_36057373的博客 866

Android ViewPager和Fragment实现顶部导航界面滑动效果、标签下的tab位置

在项目中,我们常常需要实现界面滑动切换的效果。例如,微信界面的左右滑动切换效果。那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果。 一. ViewPager 官方API 首先我们来看一下ViewPager官方给出的解释,如图: 具体意思如下: Layout 管理器允许用户可以在页面上,左右滑动来翻动页面。你可以考虑实现Pa

Sun的专栏 3926

android中viewpager+fragment,Android ViewPager + Fragment实现滑动页面效果

效果:PagerData类:package com.cloud.viewpagerdemo;import java.io.Serializable;class PagerData implements Serializable {private int mImageResId;private String mContent;PagerData(int imageResId, String cont...

weixin_39664962的博客 300

Android :ViewPager+Fragment 实现顶部导航滑动效果

我还不会gif 所以连图表动态 可以滑动的 仔细看底下有滑动条的这是寒假做的一个APP的基本框架 将真啊 虽然效果都做出来了可是学长给了源码啊 所以最近做第二遍!!希望每一个控件都可以实现啊 下面是viewpager+fragment的效果 同样我们先写布局文件 思路就是一个Viewpager适配了五个fragment 底下的选择框是RadioGroup 里面有五个radiobutto

katherine_qj的专栏 5620

android滑动切换tableview,Android使用TabLayou+fragment+viewpager实现滑动切换页面效果

TabLayou 主要实现的是标题头的 滑动 这个 控件 类似于 ScrollViewXML中的布局android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal">android:id="@+id/homefragment_tablelayouts"...

weixin_30607173的博客 374
上一篇: Android控件之Spinner用法详解
下一篇: Java多线程集锦
山东小明
博客等级 码龄10年 19粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值