ViewPager实现左右两个屏幕的切换

Posted jdsjlzx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ViewPager实现左右两个屏幕的切换相关的知识,希望对你有一定的参考价值。


项目终于需要这样的效果了,采用ViewPager去实现吧,让网上那些乱七八糟的屏幕切换类都终结了吧,ViewPager是google官方的! 

下面是

​​我借鉴的文章​​: 



起初最早接触到左右两个屏幕切换的是在 

​​《创新源于模仿之三:实现左右两个屏幕的切换》​​ 这篇文章上,感谢作者为我们提供了这么好的DEMO。 



什么是ViewPager呢? 


它是实现左右两个屏幕平滑地切换的一个类,它是Google提供的,作为android的一个补充。先上个效果图把,让大家有个直观的认识。 



ViewPager实现左右两个屏幕的切换_manager

 


我们在网上搜索这相关到主题的时候,会看到有很多关于这方面的问题:如何平滑?水平移动?等等。现在,我们可以自己不去亲自做这个费力的事情了,只需要使用到一个叫ViewPager的类即可。ViewPager是最近在Compatibility package发布的,支持android 1.6+,如果要使用的话,要通过SDK Manager去更新Compatibility package,具体使用方法在<SDK_DOC_PATH>/sdk/compatibility-library.html(SDK_DOC_PATH是自带Android文档的位置,需要更新到最新的文档才有)。 



《创新源于模仿之三:实现左右两个屏幕的切换》提供了Workspace实现了左右屏幕的切换,现在Google I/O上已经发布了这样的Workspace类,方便我们大家去使用,稍后我会同本文DEMO的源代码一起发布。那ViewPager和Workspace有什么样的区别呢?先看下api doc的说法: 

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.


如上所述,ViewPager提供了一个适配器,方便我们对各个View进行控制,而Workspace需要我们手动去添加,它相当于是一个"静态切换"。接下来我将介绍下如何使用: 



1、下载来Android SDK & AVD manager的更新:Available Packages -> Android Repository -> Android Compatibility Package, revision 3. 它将安装在\\extras\\android\\compatibility\\v4文件下 


2、建立一个Android项目,在上述安装目录下把 android-support-v4.jar添加进项目,如果是最新的ADT,只需要右击project->Android Tools->Add Compatibility Library 



3、在Activity中使用ViewPager 



4、如果ViewPager是用xml去定义的,需要写上全局的路径,如: 


Xml代码   ​


1. <android.support.v4.view.ViewPager
2. android:layout_
3. android:layout_
4. android:id="@+id/awesomepager"/>


5、建立一个PagerAdapter,实现如下方法: 

getCount(), instantiateItem(), destroyItem(), isViewFromObject() 。 

总上所述,贴上俺的代码,我们发现,可以很快很简单的实现左右两个屏幕的切换 

Java代码   ​



1. public class AwesomePagerActivity extends
2.
3. private
4.
5. private
6. private
7.
8. private
9. private
10.
11. /** Called when the activity is first created. */
12. @Override
13. public void
14. super.onCreate(savedInstanceState);
15. setContentView(R.layout.main);
16. this;
17.
18. new
19. awesomePager = (ViewPager) findViewById(R.id.awesomepager);
20. awesomePager.setAdapter(awesomeAdapter);
21.
22. new
23. mInflater = getLayoutInflater();
24. null));
25. null));
26. null));
27.
28.
29.
30. private class AwesomePagerAdapter extends
31.
32.
33. @Override
34. public int
35. return
36.
37.
38. /**
39. * 从指定的position创建page
40. *
41. * @param container ViewPager容器
42. * @param position The page position to be instantiated.
43. * @return 返回指定position的page,这里不需要是一个view,也可以是其他的视图容器.
44. */
45. @Override
46. public Object instantiateItem(View collection, int
47.
48.
49. 0);
50.
51. return
52.
53.
54. /**
55. * <span style="font-family:Droid Sans;">从指定的position销毁page</span>
56. *
57. *
58. *<span style="font-family:Droid Sans;">参数同上</span>
59. */
60. @Override
61. public void destroyItem(View collection, int
62. ((ViewPager) collection).removeView(mListViews.get(position));
63.
64.
65.
66.
67. @Override
68. public boolean
69. return
70.
71.
72. @Override
73. public void
74.
75.
76. @Override
77. public void
78.
79. @Override
80. public
81. return null;
82.
83.
84. @Override
85. public void
86.
87.
88.
89.
90.


就这样,我们可以很容易就实现左右两个屏幕之间的切换。具体页面到内容就靠大家去发挥了! 


补充: 

用ViewPager写的左右滑屏,默认是没有没有循环效果的。就是当滑到最左端或者最右端就不能滑动了,所以就试着弄了下在左面和右面各增加个空View,然后在onPageSelected方法中: 

Java代码   ​


1. @Override
2. public void onPageSelected(int
3. // TODO Auto-generated method stub
4. "onPageSelected = "
5. if(arg0 == 0)
6. 1);
7. else if(arg0 == mViewList.size() - 1)
8. 1);
9.

其他文章: 

​​android中的左右滑屏实现By ViewPager​​


以上是关于ViewPager实现左右两个屏幕的切换的主要内容,如果未能解决你的问题,请参考以下文章

android怎么实现页面的左右滑动

Android:使用ViewPager实现左右滑动切换图片加点点

Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果

Android中使用ViewPager实现屏幕页面切换和页面轮播效果

左右页面滑动

ViewPager+Fragment实现左右切换,还有点击事件