博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习记录:ViewPager实现欢迎页
阅读量:6671 次
发布时间:2019-06-25

本文共 3458 字,大约阅读时间需要 11 分钟。

许多APP在第一次启动的时候,都会有welcome page。近日尝试利用ViewPager来实现Welcome Page。

d0711 完成记录,跟新下载地址

========================================================================

  • ViewPager简述

    ViewPager可以实现多个页面滑动来回切换。其可以用作软件的欢迎界面,应用内广播页,或多图预览等。

    Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.

    android API

  • ViewPager使用方法

    • Step1

      准备好切换用的Layout布局文件(view类)
      这里需要用LayoutInflater来定位。LayoutInflater与findViewById的区别见下。

      LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化

      findViewById()是找xml布局文件下的具体widget控件 (如Button、TextView等)

    • Step2

      创建一个View类型的list,把需要添加的view放入该list。
      上面两步的示例代码见下:

      views=new ArrayList
      ();LayoutInflater inflater=getLayoutInflater();view1=inflater.inflate(R.layout.welcome1, null);view2=inflater.inflate(R.layout.welcome2, null);view3=inflater.inflate(R.layout.welcome3, null);views.add(view1);views.add(view2);views.add(view3);
    • Step3

      由于我们的ViewPager需要设置一个Adapter,故我们需要新建一个自己的Adapter类来继承PagerAdapter
      这个类必须重写这四个函数,对于此具体的分析可见该博客:
      下面是最简单的重写:

      public class MyViewPagerAdapter extends PagerAdapter{
      private List
      mListViews; public MyViewPagerAdapter(List
      mListViews) { this.mListViews = mListViews; } /* * Remove a page for the given position. * The adapter is responsible for removing the view from its container * although it only must ensure this is done by the time it returns * 该方法实现的功能是移除一个给定位置的页面 * */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mListViews.get(position)); } /* * Create the page for the given position. * The adapter is responsible for adding the view to the container given here, * although it only must ensure this is done by the time it returns fromfinishUpdate(ViewGroup). * 该方法实现的功能是添加一个给定位置的页面到容器 */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mListViews.get(position), 0); return mListViews.get(position); } /* * 获取view的数量 */ @Override public int getCount() { return mListViews.size(); } /* * Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int). * This method is required for a PagerAdapter to function properly. * */ @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; }}
    • Step4

      实例化ViewPager类,并将views通过MyViewPagerAdapter来设置为ViewPager的Adapter。同时设置当前页,同时可以设置页面转换的监听器

      viewPager=(ViewPager) findViewById(R.id.vPager);    viewPager.setAdapter(new MyViewPagerAdapter(views));    viewPager.setCurrentItem(0);    viewPager.setOnPageChangeListener(new OnPageChangeListener(){        public void onPageScrollStateChanged(int arg0) {            // TODO Auto-generated method stub        }        public void onPageScrolled(int arg0, float arg1, int arg2) {            // TODO Auto-generated method stub        }        public void onPageSelected(int arg0) {            // TODO Auto-generated method stub        }    });
    • ViewPager性能问题

      在实际使用ViewPager的时候,发现若采用1080p的素材,大部分测试手机均会出现明显的卡顿和掉针,用户体验很不好。网上有帖子采用延迟加载、优先缓存来解决这个问题。后来换成720p素材,大部分测试机均不会出现卡顿。当为3页时,测试450p为最佳(450*800)。

    • ViewPager简单实例

转载于:https://www.cnblogs.com/he11o-liu/p/7503253.html

你可能感兴趣的文章
Spring Boot和thymeleaf , freemarker , jsp三个前端模块的运用
查看>>
phalcon-入门篇3(优美的URL与Config)
查看>>
单表60亿记录等大数据场景的MySQL优化和运维之道
查看>>
sql学习笔记
查看>>
maven编译时出现There are test failures
查看>>
SpringBoot | 第三十一章:MongoDB的集成和使用
查看>>
网络学习笔记2
查看>>
JPA--多对多关系
查看>>
配置sharepoint 2010错误:Microsoft.SharePoint.Upgrad...
查看>>
Windows04.CMap
查看>>
UUID 生成算法JS版
查看>>
JAVA中,Map转实体类、实体类转Map的方法
查看>>
判断dubbo接口是否正常
查看>>
100-19
查看>>
获取n!的末尾有多少个0?
查看>>
设计模式之工厂模式
查看>>
度量平台角色的含义及运用
查看>>
前嗅ForeSpider教程:创建模板
查看>>
JAVA 排序 冒泡法
查看>>
Nginx安装和常用配置文档
查看>>