热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android开发中ViewPager实现导航页和引导页效果(总结)

ViewPager是一个视图滑动切换工具。可以用来做APP启动导航页,填充页面的话,需要自定义一个PagerAdapter数据适配器,和用ListView时有

ViewPager是一个视图滑动切换工具。可以用来做APP启动导航页,填充页面的话,需要自定义一个PagerAdapter数据适配器,和用ListView时有点类似。(ListView是自定义一个BaseAdapter数据适配器)

效果如下:

1、数据适配器MyPagerAdapter.java的代码如下:

package com.deepreality.viewpaperdemo;import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;import java.util.ArrayList;public class MyPagerAdapter extends PagerAdapter {private ArrayList viewLists;public MyPagerAdapter() {super();}public MyPagerAdapter(ArrayList viewLists) {super();this.viewLists = viewLists;}@Overridepublic int getCount() {return viewLists.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(viewLists.get(position));return viewLists.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(viewLists.get(position));}
}

2、布局文件activity_main.xml的代码如下:


备注:四个页面的布局,自行设计即可。

3、数据处理操作MainActivity.java的代码如下:

package com.deepreality.viewpaperdemo;import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ViewPager vpGuiding;private MyPagerAdapter myPagerAdapter;private MyPagerWithTitleAdapter myPagerWithTitleAdapter;private ArrayList viewArrayList;private ArrayList titleArrayList;private String[] strTitles = new String[]{"第一页", "第二页", "第三页", "第四页"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);vpGuiding = findViewById(R.id.main_vpGuiding);//viewPagerWithTitleLookLike();viewPagerNormalLookLike();}//默认效果的public void viewPagerNormalLookLike() {//List集合赋值,用于给适配器传参数viewArrayList = new ArrayList();LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_one, null, false));viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_two, null, false));viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_three, null, false));viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_four, null, false));//适配器赋值myPagerAdapter = new MyPagerAdapter(viewArrayList);//绑定数据适配器vpGuiding.setAdapter(myPagerAdapter);}//带有标题效果的public void viewPagerWithTitleLookLike() {//List集合赋值,用于给适配器传参数viewArrayList = new ArrayList();titleArrayList = new ArrayList();LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_one, null, false));viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_two, null, false));viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_three, null, false));viewArrayList.add(layoutInflater.inflate(R.layout.item_viewpaper_four, null, false));for (String str : strTitles) {titleArrayList.add(str);}//适配器赋值myPagerWithTitleAdapter = new MyPagerWithTitleAdapter(viewArrayList, titleArrayList);//绑定数据适配器vpGuiding.setAdapter(myPagerWithTitleAdapter);}
}

备注:其中包含两种样式的方法。(不带标题和带标题)

另外,带标题的话,需要重写PagerAdapter的getPageTitle(  )方法,用来设置每个页面的标题。


推荐阅读
  • 本文详细介绍了 Android 开发中显式 Intent 和隐式 Intent 的区别及应用场景,包括如何通过显式 Intent 在同一应用内切换 Activity,以及如何利用隐式 Intent 实现跨应用的功能调用。 ... [详细]
  • 本文介绍了如何通过修改Android应用的配置文件和编写布局与Activity代码,利用DOM模式将用户输入的数据保存为XML文件。 ... [详细]
  • 在使用 Android Fragment 兼容包时,可能会遇到 'The specified child already has a parent' 的异常。本文将详细解释这一错误的原因,并提供解决方案。 ... [详细]
  • 本文探讨了一个特定的问题:当应用程序通过安装器启动后最小化,再次打开时,会触发窗口丢失错误,导致应用重启,并且之前的异步线程无法正常管理。这一现象在直接从应用图标启动时不会出现。 ... [详细]
  • 深入解析Pytest Fixture与Conftest的高级应用
    本文详细探讨了Pytest中的Fixture机制及其在conftest.py文件中的全局配置应用,涵盖Fixture的基本概念、定义、多种使用场景以及作用域等内容,适合希望深入了解Pytest测试框架的开发者。 ... [详细]
  • 本文探讨了在Java中处理JSON数据的各种方法,包括APIJSON的使用案例,以及如何通过不同的工具和库实现JSON与Java对象之间的高效转换。 ... [详细]
  • 本文介绍了如何使用Orika作为Java Bean属性复制工具,通过示例展示了其基本用法和高级特性,包括不同字段名的映射和类型转换。 ... [详细]
  • [TOC]Process的几个用法和守护进程一、Process的join用法话不多说,直接上代码二、Process的pid和ppid用法需要先导入os模块站在当前进程的角度:os. ... [详细]
  • CentOS 7.4 KVM虚拟化平台搭建指南
    本文详细介绍了如何在CentOS 7.4系统上搭建KVM虚拟化平台,包括环境准备、网络配置、KVM安装与管理等步骤,适用于希望利用KVM进行虚拟化部署的技术人员。 ... [详细]
  • CSV 文件的存取
    CSV文件介绍CSV(Comma-SeparatedValues),中文通常叫做逗号分割值。CSV文件由任意数目的记录(行& ... [详细]
  • 本文介绍了 Python 中 *args 和 **kwargs 的使用方法,以及如何通过 lambda 表达式、map 和 filter 函数处理数据。同时,探讨了 enumerate 和 zip 函数的应用,并展示了如何使用生成器函数处理大数据集。 ... [详细]
  • Spring Boot中的API可视化工具介绍
    本文将介绍如何使用Spring Boot集成Swagger来创建和展示API文档。通过访问http://localhost:8080/swagger-ui.html,用户可以直接查看到应用的API文档界面,这一功能极大地简化了API文档的编写和维护。 ... [详细]
  • 本文探讨了在Android应用程序开发过程中动态管理Fragment的方法,包括动态添加和切换Fragment,以及如何实现平滑的过渡动画。文章通过一个具体的案例——订单管理系统,详细介绍了实现步骤和技术细节。 ... [详细]
  • 上一篇我们介绍了C#3.0新语言特性和改进上部分,这篇我们继续介绍剩下的部分。C#3.0新语言特性和改进包括:自动属性(Auto-ImplementedProperties)隐含 ... [详细]
  • 本文介绍了一种通过自定义工具类实现Spring的ApplicationContextAware接口来获取Spring容器中Bean的方法,并提供了详细的代码示例和配置说明。 ... [详细]
author-avatar
XhiaoSai_263
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有