Android ViewPager组件

一、以代码的方式定义并产生布局

  在界面构建过程中,会大量的使用XML文件,定义视图布局。下面尝试使用以代码的方式定义视图层级结构。使用代码方式定义视图,其实就是调用视图的构造方法。但是,在一些构建块中,依然要使用资源ID,ViewPager就是这样的一种构建块。而FragmentManager要求任何作Fragment容器的视图都必须具有资源ID。Viewpager是一个Fragment容器。

  以代码方式创建视图,应完成以下任务项:

  • 为ViewPager创建资源ID。
  • 创建ViewPager实例并赋值给ViewPager。
  • 赋值资源ID给ViewPager,并对其进行配置。
  • 设备ViewPager为Activity的内容视图。

1. 独立的资源ID

  在res/values目录下创建名为ids.xml文件,用于存储资源ID。(ids.xml)

1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3     <item type="id" name="viewPager" />
4 </resources>

2. 以代码方式创建内容视图(CrimeViewPager.java)

1 // 实例化ViewPager
2 mViewPager = new ViewPager(this);
3 // 为ViewPager实例配置资源ID
4 mViewPager.setId(R.id.viewPager);
5 // 设置为Activity的容器
6 setContentView(mViewPager);

3. ViewPager与PagerAdapter (视图显示数据的数据源)

 1 public class CrimePagerActivity extends SingleFragmentActivity
 2 {
 3     private ViewPager mViewPager;
 4     private ArrayList<Crime> mCrimes;
 5
 6     public CrimePagerActivity()
 7     {
 8     }
 9
10     @Override
11     public Fragment createFragment()
12     {
13         return null;
14     }
15
16     @Override
17     public void onCreate(Bundle savedInstanceState)
18     {
19         super.onCreate(savedInstanceState);
20
21         // 实例化ViewPager
22         mViewPager = new ViewPager(this);
23         // 为ViewPager实例配置资源ID
24         mViewPager.setId(R.id.viewPager);
25         // 设置为Activity的容器
26         setContentView(mViewPager);
27
28         mCrimes = CrimeLab.get(this).getCrimes();
29
30         // fragment manager
31         FragmentManager fm = getSupportFragmentManager();
32         mViewPager.setAdapter(new FragmentStatePagerAdapter(fm)
33         {
34             // 获取当前视图的Fragment对象
35             @Override
36             public Fragment getItem(int position)
37             {
38                 Crime crime = mCrimes.get(position);
39                 return CrimeFragment.newInstance(crime.getmId());
40             }
41
42             // 获取数据条数,计算显示视图个数
43             @Override
44             public int getCount()
45             {
46                 return mCrimes.size();
47             }
48         });
49
50         // 设置从列表进入详细界面的具体数据
51         for (int idx = 0; idx < mCrimes.size(); idx++)
52         {
53             UUID code = (UUID) getIntent().getSerializableExtra(CrimeFragment.sExtra_Crime_ID);
54             if (mCrimes.get(idx).getmId().equals(code))
55             {
56                 // 设置界面当前显示的View
57                 mViewPager.setCurrentItem(idx);
58                 break;
59             }
60         }
61     }
62 }

PS:可以通过方法设置当前页面预加载相邻页面数目:

1 // 定制预加载相邻页面的数目
2 mViewPager.setOffscreenPageLimit(3);

4. 通过方法监听界面间的切换

 1 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener()
 2         {
 3             @Override
 4             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
 5             {
 6
 7             }
 8
 9             @Override
10             public void onPageSelected(int position)
11             {
12                 Crime crime = mCrimes.get(position);
13                 if (null != crime.getmTitle())
14                 {
15                     setTitle(crime.getmTitle());
16                 }
17             }
18
19             @Override
20             public void onPageScrollStateChanged(int state)
21             {
22
23             }
24         });
时间: 2024-07-30 07:56:24

Android ViewPager组件的相关文章

Android自定义组件系列【10】——随ViewPager滑动的导航条

昨天在用到ViewPager实现滑动导航的时候发现微信的导航条效果是跟随ViewPager的滑动而动的,刚开始想了一下,感觉可以使用动画实现,但是这个滑动是随手指时时变化的,貌似不可行,后来再网上搜了一下,找到一个开源代码,结果打开一看大吃一惊,这么简单的效果代码居然大概有300多行,太占手机存储空间了!后来自己干脆重写ViewGroup使用scrollTo方法实现了一下,具体实现过程如下: package com.example.slideupdownviewpage; import andr

Android实战简易教程-第十八枪(ViewPager组件详解)

对于ViewPager组件我们知道: 1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类. 2)ViewPager类需要一个PagerAdapter适配器类给它提供数据. 3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用. 下面我们通过实例看一下ViewPager的使用. 一 实现V

android滑动组件嵌套一般思路,多任务手势思路,触摸传递思路,【例】listview嵌套viewpager

在android UI开发中,我们经常会遇到这种需求: 两个支持滑动的组件,比如listview嵌套多个listview,listview的item是一个viewpager或gallary?亦或是scrollview嵌套scrollview等等. 一般情况下,你还可能需要支持如下几种功能: ¤ 两层组件都可以滑动 ¤ 不让两个组件同时滑动,或者让两个组件同时滑动并可以自己调节 ¤ 不影响底层view的子view和嵌套view的子view的点击事件 实现上述功能时,我们也经常遇到一些问题: ¤ 点

Android学习笔记:使用ViewPager组件实现图片切换

在很多App中,尤其是第一次安装启动后,都会出现几个图片进行一些app的介绍和说明,图片可以随着滑动而切换. 我们这里利用 ViewPager组件来演示如何实现这一点. 1.创建一个app工程,默认创建一个主 Activity 2.设置该Activity的布局文件activity_main.xml内容如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="

Android ViewPager使用详解

转载自博客:http://blog.csdn.net/alangdangjia/article/details/9054921/ 这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那如何使用它呢,与LisstView类似,我们也需要一个适配器,他就是PagerAdapter.看一下api的图片, ViewPager的功能就是可以使视图滑动,就像Lanu

安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)

什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再重复. 什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Activity中,我们可以合并多个Fragment在一个单独的activity中建立多个UI面板,或

转-Fragment+ViewPager组件(高仿微信界面)

http://www.cnblogs.com/lichenwei/p/3982302.html 什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再重复. 什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Act

Android ViewPager使用具体解释

这是谷歌官方给我们提供的一个兼容低版本号安卓设备的软件包,里面包囊了仅仅有在安卓3.0以上能够使用的api.而viewpager就是当中之中的一个利用它,我们能够做非常多事情,从最简单的导航,到页面菜单等等.那怎样使用它呢,与LisstView相似,我们也须要一个适配器,他就是PagerAdapter.看一下api的图片, ViewPager的功能就是能够使视图滑动,就像Lanucher左右滑动那样.分三个步骤来使用它: 1.在住布局文件中加入 <android.support.v4.view.

Android ViewPager使用方法小结

android-support-v4.jar 是谷歌提供给我们的一个兼容低版本安卓设备的软件包,里面包囊了只有在 Android 3.0 以上可用的API.而 ViewPager 就是其中之一.利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 准备 在使用ViewPager之前,需要在 build.gradle 中加入如下语句: compile 'com.android.support:support-v4:25.3.0' compile 'com.github.hackware19