效果图:

一.这里是实现四个界面的左右拖动:

VIewPager资源的四个VIew.xmlwen文件,这里只是简易事件四个界面

演示其中一个代码:

view1.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:background="#ff0"    android:layout_height="match_parent">

    <TextView        android:text="界面1"        android:layout_width="match_parent"        android:layout_height="wrap_content" />

</LinearLayout>

(这里只是用一个TextView指示界面内容,实际应用可以对其进行扩张)


二. activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    tools:context="viewpager.lin.com.viewpager_daohang.MainActivity">

<!--PagerTabStrip给ViewPager设置标题-->    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        >

        <!--PagerTabStrip标题标签-->        <android.support.v4.view.PagerTabStrip            android:id="@+id/tab"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:foregroundGravity="top"            >

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

(这里的PagerTabStrip和PagerTitleStrip都是界面标题的标签,效果图中的 空间、群聊、公众号等的显示,实际应用众二者选其一就行,两个都写是前面一个会被后面一个覆盖,这里我使是用PagerTabStrip)

<!--
<android.support.v4.view.PagerTitleStrip
android:id="@+id/tit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foregroundGravity="top"
>
</android.support.v4.view.PagerTitleStrip>
-->

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

</LinearLayout>

三.自定义适配器 MyPagerAdapter.java

import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.List;

public class MyPagerAdapter extends PagerAdapter{  //继承适配器

private List<View>viewList;      private List<String> titleList;  

        //实现构造方法    public MyPagerAdapter(List<View> viewList,List<String> titleList){this.viewList=viewList;        this.titleList=titleList;     }

/*ViewPager正常一次加载三个多余的摧毁 */

    @Override    public int getCount() {return viewList.size();  //返回当前页卡数量    }

@Override    public boolean isViewFromObject(View view, Object object) {   //View是否来自对象        return view==object;       }

@Override    public Object instantiateItem(ViewGroup container, int position) {  //实例化一个页卡        container.addView(viewList.get(position));  //position代表当前的位置(所定位的View)        return viewList.get(position);    }

@Override    public void destroyItem(ViewGroup container, int position, Object object) {  //销毁页卡        container.removeView(viewList.get(position));    }

/*    设置Viewpager页卡的标题    在main_activity.xml文件中的<ViewPager/>里添加<android.support.v4.view.PagerTabStrip/>子标签 才起作用     */    @Override    public CharSequence getPageTitle(int position) {  //返回当前view对应的标题        return titleList.get(position);    }
}

四.代码实现:MainActivity.java

import android.support.v4.view.PagerTabStrip;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.Window;

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

public class MainActivity extends AppCompatActivity {/*    数据源是  List<View>时   适配器用:PagerAdapter    数据源是  List<Fragment>  适配器用 FragmentPagerAdapter 或 FragmentStatePagerAdapter     */    private List<View>viewList;   //用于装适配器的资源,即四个VIew.xml文件对应的IView对象    private List<String> titleList;  //用于装标题文本    private ViewPager pager;  //实例    private PagerTabStrip tab;  //标题实例    @Override    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);        //requestWindowFeature(Window.FEATURE_NO_TITLE);  //设置无系统标题栏        setContentView(R.layout.activity_main);

        viewList=new ArrayList<View>();  //创建数据源  

        //将布局转化为View对象   (上下文,ID,父组件)        View view1=View.inflate(MainActivity.this,R.layout.view1,null);        View view2=View.inflate(MainActivity.this,R.layout.view2,null);        View view3=View.inflate(MainActivity.this,R.layout.view3,null);        View view4=View.inflate(MainActivity.this,R.layout.view4,null);

        viewList.add(view1);//加载资源        viewList.add(view2);        viewList.add(view3);        viewList.add(view4);

        //为每一个页面设置标题资源        titleList=new ArrayList<String>();        titleList.add("新朋友");        titleList.add("群聊");        titleList.add("公众号");        titleList.add("空间");

        //为标题设置属性        tab= (PagerTabStrip) findViewById(R.id.tab);  //标题对象        tab.setDrawFullUnderline(false); //标题底部无线条        tab.setBackgroundColor(4);  //设置标题背景颜色        //tab.setTabIndicatorColor(color.GREEN); //设置菜单字样底部的线条颜色

        //初始化ViewPager        pager= (ViewPager) findViewById(R.id.pager);

        //创建pagerAdapter适配器        MyPagerAdapter myPagerAdapter=new MyPagerAdapter(viewList,titleList);        pager.setAdapter(myPagerAdapter);

    }
}

代码:

项目地址:https://github.com/linyuanbin/ViewPager

ViewPager通过自定义适配器MyPagerAdapter实现界面导航(上标题)相关推荐

  1. viewPager开启界面导航之旅

    当下载一个app时,首次使用都会出现界面导航页面,今天就来写一个简单的页面导航,由于本人比较懒,随便找了一张图片,你可以按照你的想法换掉,废话少说,开始界面导航之旅 首先先写一个不到导航小圆点的界面导 ...

  2. android中界面滑动延伸,android中ViewPager详解--视图滑动、界面卡等效果 (三)

    GuideActivity.java引导界面: import java.util.ArrayList; import java.util.List; import android.app.Activi ...

  3. android中ViewPager详解--视图滑动、界面卡等效果 (三)

    2019独角兽企业重金招聘Python工程师标准>>> GuideActivity.java引导界面: import java.util.ArrayList; import java ...

  4. 结合Navigation组件实现JetPack Compose的界面导航

    Android JetPack Compose可以利用Navigation组件来实现导航 一.Navigation组件的配置 新建项目,选择Empty Compose Activity. 然后,在项目 ...

  5. 自定义适配器(Adapter)的使用

    在实际应用中常常需要用到自定义的适配器来显示视图比如qq好友列表等等, 对于这样的视图需求我们可以简单分析下所需要的内容.首先这个界面需要一个ListView.而每一个item需要有ImageView ...

  6. XamarinAndroid组件教程RecylerView自定义适配器动画

    XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画.此时 ...

  7. java方便适配器,JAXB简单自定义适配器以及简单使用

    JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...

  8. 【RecyclerView】 一、RecyclerView 最基本用法 ( 添加支持库 | 设置布局文件 | 自定义适配器 )

    文章目录 一.添加支持库 二.布局文件中使用 RecyclerView 三.自定义适配器 四.RecyclerView 设置流程 五.RecyclerView 完整 Java 代码示例 一.添加支持库 ...

  9. android 之自定义适配器(重写的getView()方法中convertView元素的妙用)一个实例

    实现效果: 主要还是ListView的优化: 基本思路: <1>使用自定义适配器完成操作 <2>将listView进行优化处理 /*  //ListView完成了重用条目的优化 ...

最新文章

  1. Qt Creator设置场景环境
  2. Hash Table Benchmarks
  3. MSF(五):客户端渗透
  4. html字段隐藏,如何刮取动态隐藏的HTML字段(UuViewState)值?
  5. win11 32位官方版原版镜像文件v2021.07
  6. 蓝桥杯 基础练习 特殊的数字
  7. 无代码来了,还要程序员吗?
  8. Electron开发桌面应用
  9. 星痕 轻松实现大屏数据可视化_数据可视化的一些思考丨如何做出令人满意的大屏可视化设计(一)...
  10. 我的世界怎么在服务器中显示键位,我的世界基础键位操作介绍 | 我的世界 | MC世界侠...
  11. 一文讲清微服务架构、分布式架构、微服务、SOA
  12. 如何用excel做正交分析_利用Excel进行正交设计及分析
  13. 舵机和舵机控制版、步进电机、伺服电机
  14. 《一树梨花》旋转特效
  15. excel表格如何转换成word表格_Word如何制作表格?Word制作表格超实用技巧
  16. 学习R语言这几本电子书就够了!
  17. 十分钟实现灭霸打响指灰飞烟灭的效果
  18. 生意一直不愠不火的火锅店,用一招“一元套餐”竟转亏为盈?
  19. UltimateDefrag磁盘碎片整理软件 v3.0.100.19汉化版
  20. json解析_json解析

热门文章

  1. 幸好权健AI还没落地!一个腕表顶中医,18个关键点就能刷脸
  2. Waymo无人驾驶出租车上线:科技感爆棚,还比Uber便宜
  3. 不戴眼镜听不清?Google用视觉信号分离语音 | 附论文
  4. 刚刚,英伟达发布最强无人车AI芯片,以及一系列自动驾驶新产品
  5. Excel中 ColorIndex 属性值和颜色对照表
  6. Apache RocketMQ 发布 v4.4.0,新添权限控制和消息轨迹特性
  7. lvs + keepalived + nginx 实现高可用
  8. 说说如何做oracle的SQL审核呢
  9. 成吉思汗:意志征服世界——读书笔记
  10. SQL Server中 缓冲和池的不同点