Viewpager是用于实现多页面的切换效果的。在现在的app中非常常见,通常会配合Fragment使用。现在简单的对view的使用进行介绍。

首先认识一个这个控件,ViewPager。它是google SDk中自带的一个附加包的一个类(这个附加包是android-support-v4.jar),可以用来实现屏幕间的切换。

首先进行页面设计:

main.xml文件

 1  <android.support.v4.view.ViewPager
 2        android:layout_width="match_parent"
 3        android:layout_height="match_parent"
 4        android:id="@+id/viewPager"
 5        ></android.support.v4.view.ViewPager>
 6
 7     <LinearLayout
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:gravity="center_vertical"
11         android:layout_alignParentBottom="true"
12         android:orientation="horizontal"
13         android:id="@+id/group"
14         ></LinearLayout>

每个页面的的代码一共有三个item1,item2,item3现在只放一个其他的类似

 <ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:src="@drawable/view1"android:id="@+id/item1"/>

只有一张图片。

现在代码部分,先定义字段

1     ArrayList<View> viewlist;//页面的内容
2     ViewPager vpager;//页卡内容
3     ImageView image;//动画图片
4     ImageView[] imaglist;//动画图片
5     ViewGroup group;//动画图片效果

oncreate()方法

 1 protected void onCreate(Bundle savedInstanceState) {
 2         super.onCreate(savedInstanceState);
 3         setContentView(R.layout.activity_main);
 4
 5         vpager = (ViewPager) findViewById(R.id.viewPager);
 6
 7         viewlist = new ArrayList<View>();
 8         LayoutInflater inflater = getLayoutInflater();
 9         View v1 = inflater.inflate(R.layout.item1, null);
10         View v2 = inflater.inflate(R.layout.item2, null);
11         View v3 = inflater.inflate(R.layout.item3, null);
12
13         viewlist.add(v1);
14         viewlist.add(v2);
15         viewlist.add(v3);
16
17
18         imaglist = new ImageView[viewlist.size()];
19         for (int i = 0; i < viewlist.size(); i++) {
20
21             image = new ImageView(MainActivity.this);
22
23             if (i == 0) {
24                 image.setImageResource(R.drawable.page_indicator_focused);
25             } else {
26                 image.setImageResource(R.drawable.page_indicator_unfocused);
27             }
28             imaglist[i] = image;
29             group.addView(image);
30         }
31
32         vpager.setAdapter(adapter);
33         vpager.setOnPageChangeListener(new myPagerChangeListener());
34
35
36     }

viewpager必须通过适配器使用。下面的代码定义了适配器

 1 PagerAdapter adapter = new PagerAdapter() {
 2         @Override
 3         public int getCount() {
 4             return viewlist.size();
 5         }
 6
 7         @Override
 8         public boolean isViewFromObject(View view, Object o) {
 9             return view==o;
10         }
11
12         @Override
13         public Object instantiateItem(ViewGroup container, int position) {
14             ((ViewPager)container).addView(viewlist.get(position));
15
16             return viewlist.get(position);
17         }
18
19         @Override
20         public void destroyItem(ViewGroup container, int position, Object object) {
21             ((ViewPager)container).removeView(viewlist.get(position));
22         }
23     };

最后是定义监听时间。在进行翻页的时候得动画

    class myPagerChangeListener implements ViewPager.OnPageChangeListener{@Overridepublic void onPageScrolled(int i, float v, int i1) {}@Overridepublic void onPageSelected(int i) {for(int j=0;i<imaglist.length;j++){if(i==j){imaglist[j].setImageResource(R.drawable.page_indicator_focused);}else {imaglist[j].setImageResource(R.drawable.page_indicator_unfocused);}}}@Overridepublic void onPageScrollStateChanged(int i) {}}

转载于:https://www.cnblogs.com/yuqt/p/5042839.html

viewpager的使用相关推荐

  1. Android RecyclerView(和SnapHelper) 实现类似ViewPager的效果

    实现的效果图如下 2 行代码就实现了,其余的都是recyclerview 的代码 如果不显示一次可以滑动多个的话可以使用LinearSnapHelper 具体代码如下(实际就2行代码呢) recycl ...

  2. ViewPager 实现界面加载不同的数据

    demo 地址 下面是要要实现的效果图 有点类似RecyclerView 不过这个ViewPager 实现的 数据呢也是在adapter 中实现呢, 下面就直接上代码看看把 public class ...

  3. ViewPager与Fragment结合使用,以及切换的时候Fragment 的生命周期

    下面要做的效果图下图 首先我们创建一个适配器如下 public class FraPagerAdapter extends FragmentPagerAdapter {private List< ...

  4. ViewPager 设置间距的方法

    要实现的效果如下图 第一种方法:viewpager 外层添加一个布局 记得添加 android:clipChildren="false" // 是否限制子View在其范围内,默认为 ...

  5. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期

    Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...

  6. android 可折叠标题栏,ViewPager + Fragment + 折叠式标题栏异常

    我模仿别人的知乎日报,新闻列表页没问题,内容明细页(NewsDetail)用的是ViewPager+Fragment.可以左右滑动看左右的新闻的. 我的项目地址是链接描述 但是我在做顶部可折叠式标题栏 ...

  7. android Viewpager取消预加载及Fragment方法的学习

    1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载.通过设置setOffscreenPageLimit(int numbe ...

  8. android 弹出fragment,Android中ViewPager获取当前显示的Fragment

    前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...

  9. 【Android】ViewPager实现无限循环滚动

    最近做的一个项目,客户要求在ViewPager实现的主页面中滑动到最后一页后继续滑动能返回到第一页,也就是实现无限循环滚动,效果如下: 看了下ViewPager没有滑到尽头的回调方法,因此想到的解决方 ...

  10. Android ViewPager使用具体解释

    这是谷歌官方给我们提供的一个兼容低版本号安卓设备的软件包,里面包囊了仅仅有在安卓3.0以上能够使用的api.而viewpager就是当中之中的一个利用它,我们能够做非常多事情,从最简单的导航,到页面菜 ...

最新文章

  1. php向页面中添加数据_PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码...
  2. linux线程的实现【转】
  3. golang 数据库null值错误 解决方法
  4. python 教程 网盘-python教程网盘
  5. C++静态成员函数小结
  6. Set精讲(Java)·算法常用集合处理方法
  7. php接口 含义,php晋级必备:一文读懂php接口特点和使用!
  8. Linux的网络管理命令使用总结
  9. Linux 莱特币Litcoin节点搭建
  10. python argv 详解_详解sys.argv[]的使用方法
  11. 【渝粤题库】陕西师范大学600000 仪器分析 作业(专升本)
  12. Rstudio运行时一直报错说找不到对象
  13. 斯坦福NLP名课带学详解 | CS224n 第7讲 - 梯度消失问题与RNN变种(NLP通关指南·完结)
  14. 【Day4.3】大皇宫内蹭讲解
  15. Python对word文档进行操作
  16. Arcgis根据矢量道路数据来提取道路中心线
  17. 《让子弹飞》系列——彩蛋之“城南两大家族”
  18. [整理][VBA]Excel合并表格
  19. css单元格固定宽度大小,超过部分使用省略号表示
  20. 浅谈统一权限管理平台

热门文章

  1. ECMAScript6 模版字符串
  2. 使用RQShineLabel
  3. java 当前时间格式_JAVA中获取当前系统时间及格式转换
  4. 入侵检测规则匹配算法--单模匹配算法、多模匹配算法、hyperscan
  5. 编译器前端概述与可信编译器
  6. mysql 支持gbk_MySQL不支持GBK编码的解决方法
  7. (87)Verilog HDL:七分频设计
  8. (12)FPGA面试技能提升篇(IUS、PT、Leda)
  9. java中用new创建一个对象的过程解析_【漫画】Java对象的创建和访问全过程详解...
  10. 4、python简单线性回归代码案例(完整)_python 实现一个简单的线性回归案例