Android实用笔记——使用ViewPager实现导航

2023-10-30

1、ViewPager功能

    可以使试图左右滑动(类似微信的顶部导航栏)。

 

2、加入ViewPager:

    <!--
      android.support.v4.view.ViewPager	为谷歌为了管理当前版本碎片化的问题而提供的兼容包
                     主要目的是为了解决向下兼容的问题,让一些高版本的控件可以在低版本的控件中使用
                     位于libs文件夹下,Viewpager控件为此架包的一个空间
      -->
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
    </android.support.v4.view.ViewPager>

 

3、加载显示的页卡:

    将Layout布局转换为View对象

164244_snn7_2725918.png

 

4、配置Adapter:

164542_ZonR_2725918.png

 

5、应用:

    a、创建View1.xml、View2.xml、View3.xml、View4.xml文件备用,以下为View1,其余与其类似

<?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"
    android:orientation="vertical" >
    
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个界面"
        ></TextView>

</LinearLayout>

    b、编辑MainActivity.java文件、创建并编辑MyPagerAdapter.java文件、编辑activity_main.xml文件,步骤如代码注释所示

        MainActivity.java文件:

package com.example.myandroidviewpager;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity implements OnPageChangeListener{
	//第一步:将新创建的几个View转化为对象存入List作数据源
	//1.1、声明数据源集合
	private List<View>viewList;
	
	//4.1、声明ViewPager对象
	private ViewPager pager;
	
	//5.1、声明标题栏对象,它其实是ViewPager的子标签
	private PagerTabStrip tab;
	//5.3、声明标题名称集合
	private List<String>titleList;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //1.2、将viewList初始化
        viewList=new ArrayList<View>();
        
        //1.3、把布局转成View对象   View.inflate(上下文, 布局ID, 父组件)
        View view1= View.inflate(this, R.layout.view1, null);
        View view2= View.inflate(this, R.layout.view2, null);
        View view3= View.inflate(this, R.layout.view3, null);
        View view4= View.inflate(this, R.layout.view4, null);
        
        //1.4、将生成的View对象加入到数据源的集合中
        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);
        
        //4.2、初始化ViewPager
        pager=(ViewPager) findViewById(R.id.pager);
        
        //5.4、为ViewPager页卡设置标题
        titleList=new ArrayList<String>();
        titleList.add("第一页");
        titleList.add("第二页");
        titleList.add("第三页");
        titleList.add("第四页");
        
        //5.5、需要将titleList加入到构造方法中去,则需要修改MyPagerAdapter
        
        //第二步,配置适配器,新建MyPagerAdapter。java文件
        
        //第三步、创建适配器PagerAdapter
        MyPagerAdapter adapter=new MyPagerAdapter(viewList,titleList);
        
        //第四步、ViewPager加载适配器
        //4.3、加载
        pager.setAdapter(adapter);
        
        //7.3、加载监听器
        pager.setOnPageChangeListener(this);
        
        //第五步、创建标题栏
        //5.2在main。xml文件中创建ViewPager的子标签
        
        //第六步、为PagerTabStript设置一些属性
        tab=(PagerTabStrip) findViewById(R.id.tab);
        tab.setBackgroundColor(Color.YELLOW);
        tab.setTextColor(Color.BLUE);
        tab.setDrawFullUnderline(false);
        tab.setTabIndicatorColor(Color.GREEN);        
    }

    //第七步、设置监听器
	@Override
	public void onPageScrollStateChanged(int arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onPageSelected(int arg0) {
		// TODO Auto-generated method stub
		//7.1打印当前页面
		Toast.makeText(this, "当前是"+arg0+"个页面",Toast.LENGTH_SHORT);
	}   
}

        MyPagerAdapter.java文件:

package com.example.myandroidviewpager;

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.text.style.SuperscriptSpan;
import android.view.View;
import android.view.ViewGroup;

public class MyPagerAdapter extends PagerAdapter{
	//第二步,配置适配器,新建MyPagerAdapter。java文件
	//2.1、声明搭建适配器需要的数据
	private List<View>viewList;
	
	//5.5、需要将titleList加入到构造方法中去,则需要修改MyPagerAdapter
	private List<String>titleList;
	
	//2.2、搭建构造方法
	//5.6、修改对应的构造方法
	public MyPagerAdapter(List<View>viewList,List<String>titleList){
		this.viewList=viewList;
		this.titleList=titleList;
	}
	
	//2.3、返回的是页卡数量
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return viewList.size();
	}

	//2.4、判断当前View对象是否来自于对象
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		// TODO Auto-generated method stub
		return arg0==arg1;
	}

	//2.5、实例化一个页卡
	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		// TODO Auto-generated method stub
		container.addView(viewList.get(position));
		return viewList.get(position);
	}
	
	//2.6、销毁一个页卡
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		// TODO Auto-generated method stub
		container.removeView(viewList.get(position));
	}
	
	//5.7、添加加载标题的方法,设置ViewPager的标题
	@Override
	public CharSequence getPageTitle(int position) {
		// TODO Auto-generated method stub
		return titleList.get(position);
	}
}

        activity_main.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <!--
      android.support.v4.view.ViewPager	为谷歌为了管理当前版本碎片化的问题而提供的兼容包
                     主要目的是为了解决向下兼容的问题,让一些高版本的控件可以在低版本的控件中使用
                     位于libs文件夹下,Viewpager控件为此架包的一个空间
      -->
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
        
        <android.support.v4.view.PagerTabStrip
            android:id="@+id/tab"
        	android:layout_width="wrap_content"
        	android:layout_height="wrap_content"
        	android:layout_gravity="top"
        	>
        </android.support.v4.view.PagerTabStrip>
       <!--
       	 与其类似的一个标签
       	 <android.support.v4.view.PagerTitleStrip
            android:id="@+id/tab"
        	android:layout_width="wrap_content"
        	android:layout_height="wrap_content"
        	android:layout_gravity="top"
        	>
        </android.support.v4.view.PagerTitleStrip>
        	一般两个不会一起用,如果一起用,android.support.v4.view.PagerTabStrip会被屏蔽,
        	只显示android.support.v4.view.PagerTitleStrip的效果
       -->    
        
        
    </android.support.v4.view.ViewPager>
    
</RelativeLayout>

    c、结果

        第四步完成结果:

180015_RBNd_2725918.png

175957_qUFt_2725918.png

180039_D2ws_2725918.png

        第五步完成结果:

180416_INA6_2725918.png

        第六步完成结果:

181519_0UOS_2725918.png

转载于:https://my.oschina.net/CoderBleak/blog/725093

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android实用笔记——使用ViewPager实现导航 的相关文章

随机推荐

  • Java必知必会的常用类库

    阅读文本大概需要3分钟 Java是一个开源的世界 如果你不懂的在网上寻找适合的轮子 而是经常避免造成 你将无法再代码的泥潭里解脱出来 但是这也不是一概而论的 初学者需要造轮子的能力 而熟练开发者需要改轮子的能力 精通者需要发现轮子的能力 今
  • 大数据与人工智能的关系,不少于500字

    大数据与人工智能是密切相关的两个领域 大数据指的是海量 高增长率和多样化的数据 它可以来自各种不同的来源 如社交媒体 传感器 互联网 电子商务等 而人工智能则是计算机科学的一个分支 研究如何让计算机模拟或增强人类的智能 大数据和人工智能的关
  • 印刷业MES系统解决方案

    印刷业症结所在 1 不能实时准确的跟踪每一批订单的的生产进度 包括各工序的进度 2 印刷报价混乱 没有一个标准的报价参考 很难确保报价的准确性 3 不能有效控制产品加工的成本 没有电脑辅助计算 或者软件不具有计算工单成本的情况下 在开工单时
  • idea快速实现接口

    1 创建接口 public class TestI int getA 2 实现类 alt enter
  • 新词发现方法,新词发现算法有哪些,热词的发现方法,互联网热词挖掘方法

    1 新词发现方法 1 从大数据中抽取 通过抓取互联网上的海量语料 利用统计模型和自然语言处理技术 挖掘新的高频单词或词组 比如Google的Ngram Viewer 2 基于社交媒体的新词发现 通过分析社交媒体平台上的大量用户互动记录 挖掘
  • UMG主菜单切换到场景中的问题解决

    链接来自UE4官方文档 https docs unrealengine com zh CN Engine UMG HowTo CreateMainMenu index html 只说问题 1 OptionMenu必须成为一个变量 否则没法在
  • ciscn login

    这是去年国赛一道签到题 当时没做出来 现在来复现一下 一 查看保护 保护全开 二 逆向分析 main void fastcall noreturn main int64 a1 char a2 char a3 char s 1032 rsp
  • 报错:Keil5执行文件之后显示Target not created

    报错 Keil5执行文件之后显示Target not created 分析 Keil中出现Target not created 原因主要有 1 编译时出错 比如语法错误 变量未定义 2 连接时出错 比如调用外部函数 而由缺少相应的OBJ文件
  • Unity委托,事件(抄录)

    什么是委托 C 中的委托 Delegate 类似于 C 或 C 中函数的指针 委托 Delegate 是存有对某个方法的引用的一种引用类型变量 引用可在运行时被改变 事件在任何位置声明 委托 Delegate 特别用于实现事件和回调方法 所
  • JAVA+Spring踩坑系列之 微服务测试环境联调

    注意事项如下 1 配置文件 线上配置图一默认的 bootstrap 后面的关键字如online onlinetest与图二的spring profiles active字段对应 默认走bootstrap的配置 具体图二的spring clo
  • 在二叉树中找到一个节点的后继节点

    题目 现在有一种新的二叉树节点类型如下 public class Node public int value public Node left public Node right public Node parent public Node
  • Model-Agnostic Meta-Learning (MAML) 理解

    模型不可知元学习 Model Agnostic Meta Learning MAML 的目标是使模型每次的梯度更新更有效 提升模型的学习效率 泛化能力等 它可以被看做一种对模型进行预训练的方法 适用于小样本学习 原文 http procee
  • 学生选课管理信息系统

    文件下载地址 https download csdn net download axiebuzhen 10895062 1 业务描述 设计本系统 模拟学生选课的部分管理功能 学生入校注册后需统一记录学生个人基本信息 对于面向学生开设的相关课
  • JVM--基础--24.1--参数

    JVM 基础 24 1 参数 1 常用参数 1 1 Xms 初始堆大小 默认值 物理内存的1 64 lt 1GB 默认空余堆内存小于40 时 JVM就会增大堆 直到 Xmx的最大限制 可以通过MinHeapFreeRatio参数可以调整 1
  • ueditor二次加载(getEditor)渲染失败(加载失败)的原因解决方案

    来源 php高级视频自学论坛 ueditor二次加载 getEditor 渲染失败 加载失败 的原因解决方案 大家自己看看官方的js文件ueditor all js有以下的代码 name getEditor since 1 2 4 gram
  • 毕业设计 基于stm32的RFID与指纹识别的门禁系统

    文章目录 1 简介 2 绪论 2 1 课题背景与目的 3 射频识别 3 1 射频识别技术 3 2 射频识别模块 3 2 1 RFID模块 3 2 2 RFID模块组成 4 系统设计 4 1 系统架构 4 1 1 硬件部分 4 1 2 软件部
  • 【云计算】docker前世今生

    下一代云计算模式 Docker正掀起个性化商业革命 作者 吴宁川 来源 ITValue 发布时间 2015 09 20 10 41 阅读 12976 次 推荐 24 原文链接 收藏 文 ITValue 记者吴宁川 从 2008 年开始进入公
  • 推荐4个很棒的Java项目,超级适合小白练手,赶紧收藏!

    好程序员今天给大家推荐4个很棒的Java练手项目 超适合小白哦 网上订餐管理系统 经过对订餐软件的研究 使用 切身体会用户的需求再对商家展开一系列调查 确定商家的需求 基于这些调查结果 设计系统功能 订餐者必须是在线注册了的用户 创立用户
  • 关于cookie的设置path路径的问题

    正常的Cookie只能在一个应用中访问 即cookie只能由创建他的应用访问要实现跨应用访问cookie或者跨域访问cookie就得使用到cookie的setPath 和setDomain 方法 1 同一服务器内的cookie共享方法 se
  • Android实用笔记——使用ViewPager实现导航

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 ViewPager功能 可以使试图左右滑动 类似微信的顶部导航栏 2 加入ViewPager