文章目录

  • 1 ViewPage介绍
  • 2 使用多个layout进行展示
    • 2.2 使用 `LayoutInflater` 加载布局
  • 3 PagerAdapter 联合多个界面
  • 4 在`MainActivity` 中创建并应用适配器

1 ViewPage介绍

  • 它是Android 3.0后引入的一个UI控件(视图滑动切换工具)
  • 通过手势滑动可以完成View的切换,一般是用来做APP的引导页或者实现图片轮播

2 使用多个layout进行展示

2.2 使用 LayoutInflater 加载布局

//获取启动页面,将布局加载到UI
//LayoutInflater 将布局的.xml文件转换成View对象
LayoutInflater layoutInflater = getLayoutInflater();
view1 = layoutInflater.inflate(R.layout.image_layout_1,null);
view2 = layoutInflater.inflate(R.layout.image_layout_2,null);

3 PagerAdapter 联合多个界面

  • PagerAdapter主要是对ViewPager进行数据适配,以实现ViewPager控件的滑动效果

  • getCount(): 显示多少个页面

  • isViewFromObject(View, Object) :判断返回的view是否是来自Object

  • instantiateItem(ViewGroup, int) :初始化指定位置的页面

  • destroyItem(ViewGroup, int, Object) :销毁指定位置的页面

import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.ArrayList;
import java.util.List;public class MyPageAdapter extends PagerAdapter {// 定义视图列表private List<View> viewList = new ArrayList<View>();// 构造方法传入数据public MyPageAdapter(List<View> viewList) {this.viewList = viewList;}public MyPageAdapter() {}//初始化指定位置的页面@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {//将页面加入容器container.addView(viewList.get(position));//返回加载的页面return viewList.get(position);}//销毁指定位置的页面@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView(viewList.get(position));//删除页面}//显示多少个页面@Overridepublic int getCount() {return viewList.size();}//判断view 是否是object@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view==object;}
}

4 在MainActivity 中创建并应用适配器

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {// 获取UI控件private ViewPager myViewPager;private View view1, view2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取ViewPager对象myViewPager = (ViewPager)findViewById(R.id.myViewPager);//获取三个启动页面,将布局和变量联系起来//LayoutInflater 将布局的.xml文件转换成View对象LayoutInflater layoutInflater = getLayoutInflater();view1 = layoutInflater.inflate(R.layout.image_layout_1,null);view2 = layoutInflater.inflate(R.layout.image_layout_2,null);//创建视图列表List<View> viewList = new ArrayList<View>();viewList.add(view1);viewList.add(view2);//创建适配器MyPageAdapter myPagerAdapter = new MyPageAdapter(viewList);//设置适配器myViewPager.setAdapter(myPagerAdapter);}
}

Android ViewPage使用相关推荐

  1. android viewpage预加载和懒加载问题

    1.本人理解懒加载和预加载问题某种情况下可以归结为一类问题,下面我就说一下我遇到的预加载问题和懒加载问题及解决的相应方法: - [1 ] 预加载问题         描述:我用到了三个fragment ...

  2. Android ViewPage的使用(一)

    ViewPage是一个简单的页面切换组件,左右滑动的话,有效果,和ListView一样 也需要配合适配器(PagerAdapter)来使用. 先来个效果图吧 先随便创建3个view页面,用于放到 Vi ...

  3. android viewPage 打造3d画廊

    之前学习时学习了ViewPager打造3d画廊,今天找出来把他贴上去,给需要的小伙伴用!废话不多说直接贴! 一.Activity /*** 3da 画廊*/ public class Main3Act ...

  4. android 无刷新 好友,Android viewPage notifyDataSetChanged无刷新

    转载 http://www.67tgb.com/?p=624 最近项目结束,搞了一次代码分享.其中一位同学分享了一下自己在解决问题过程中的一些心得体会,感觉受益匪浅.整理出来,分享给大家. 建议使用自 ...

  5. Android之解决viewpage加载第3个fragment的时候,第一个fragment又重新构建问题

    1 .问题 viewpage加载第3个fragment的时候,第一个fragment又重新构建问题,感觉自己好傻逼的,不知道啥原因,原来是少了一个设置,加载旁边多少个fragment不销毁 2 .解决 ...

  6. Android反射修改view,Android 修改viewpage滑动速度的实现代码

    1.自定义Scroller public class ViewPageFixedSpeedScroller extends Scroller { private int mDuration = 300 ...

  7. Android 自定义viewpage + videoview 实现竖屏视频播放效果

    Android 自定义viewpage + videoview 实现竖屏视频播放效果 效果图 实现步骤 前提概要 自定义 viewpage 自定义 videoview 主逻辑代码 效果图 由于用的是v ...

  8. Android 开发之ViewPage官方文档学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> 以下为官网的官方文档,我将从翻译该文档开始学习. ViewPager extends ViewGroup java.lang. ...

  9. android使用ViewPage实现Grally画廊的卡片式效果

    通过使用ViewPage实现Grally画廊的卡片式效果,简单易懂易实现. 之前一直在github与网上搜索资料,查看了很多比如RecyclerView实现画廊的效果,ViewPage实现画廊的效果, ...

  10. android自定义引导页,Android仿大众点评引导页(ViewPage)+主页面(Fragment)的实现

    大家好,今天主要是实现仿大众点评引导页和主页面以及城市定位的实现,主要使用ViewPager+Fragment+SharedPreferences,实现了第一次打开程序出现引导页,再次打开跳过引导页, ...

最新文章

  1. 辅助模块加速收敛,精度大幅提升 移动端实时的NanoDet-Plus来了
  2. Win32窗体控件方法与消息
  3. ERROR 1136 (21S01): MySQL 的报错: 错误 1136(21S01): 列的计数 与 value 的计数 不相符 在第四行。
  4. 雅礼集训 2017 Day1
  5. Hive 查看库有多少表,表有多少字段以及动态监控
  6. unbuntu 18.04 LTS 版 安装Samba服务器
  7. C语言程序设计教材九斗验证,C语言实验报告参考答案(原)
  8. 【DS基础】静态链表
  9. Java实现地固坐标与经纬度转换
  10. ECS架构 Entitas-CSharp学习之路(三)
  11. No enclosing instance of type FormDetailBean is accessible. Must qualify the allocation with an encl
  12. css简单样式(旋转正方形、纸片旋转、轮播图3D、简单轮播图)
  13. LeetCode 1079 活字印刷
  14. BAT涉足电影业若只是报玩票心态,入局或难长久
  15. 【信息系统项目管理师】高项案例分析攻略
  16. 基于豆瓣评价的文本分析 ——以《流浪地球》为例
  17. 适合新手拿来练习的springboot+vue前后端分离小Demo
  18. 窃听神技:使用智能手机收听通过笔记本电脑键盘输入的内容
  19. 五行塔怎么吃第五个_十大法则花落谁家?鸿钧道人仅仅第五!
  20. 指标公式c语言源码下载,通达信超赢天下指标公式源码(通达信)

热门文章

  1. pdf转dwg为什么乱码
  2. LVDS接口定义详解
  3. python写监控脚本_python写个进程监控的脚本
  4. 本科计算机课程学习路线建议
  5. [拓扑资料汇总-近期更新中]点集代数拓扑 与泛函共看效果更佳
  6. vue + vant 使用阿里图标库
  7. 实对称矩阵对角化为什么要做正交化单位化操作呢?
  8. Quartz定时任务执行原理
  9. 人脸预处理:人脸检测+人脸对齐
  10. 超详细的测试理论基础知识