看下效果图吧,网上好多都是放美女的,我还是简单点就放个TextView吧:

activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code><RelativeLayout xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code>
<code> </code><code>xmlns:tools=</code><code>"http://schemas.android.com/tools"</code>
<code> </code><code>android:layout_width=</code><code>"match_parent"</code>
<code> </code><code>android:layout_height=</code><code>"match_parent"</code>
<code> </code><code>android:paddingBottom=</code><code>"@dimen/activity_vertical_margin"</code>
<code> </code><code>android:paddingLeft=</code><code>"@dimen/activity_horizontal_margin"</code>
<code> </code><code>android:paddingRight=</code><code>"@dimen/activity_horizontal_margin"</code>
<code> </code><code>android:paddingTop=</code><code>"@dimen/activity_vertical_margin"</code>
<code> </code><code>tools:context=</code><code>"com.example.googleviewpager.MainActivity"</code> <code>></code>
<code> </code><code><android.support.v4.view.ViewPager </code>
<code> </code><code>android:id=</code><code>"@+id/viewpager"</code>
<code> </code><code>android:layout_width=</code><code>"wrap_content"</code>
<code> </code><code>android:layout_height=</code><code>"wrap_content"</code>
<code> </code><code>android:layout_gravity=</code><code>"center"</code> <code>/></code>
<code></RelativeLayout></code>
需要切换的三个布局文件,one.xml,two.xml,three.xml,one.xml的代码,其他两个类似就不贴代码了:
<code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code><code>?></code>
<code><LinearLayout xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code>
<code> </code><code>android:orientation=</code><code>"vertical"</code>
<code> </code><code>></code>
<code> </code>
<code> </code><code><TextView</code>
<code> </code><code>android:text=</code><code>"周永康被开"</code>
<code> </code><code>android:layout_height=</code><code>"wrap_content"</code><code>/></code>
<code></LinearLayout></code>
onCreate中的代码,其实分别加载了三个View,其中第一个和最后一个加载了一个空的View,主要是为了能够左右循环:
<code>setContentView(R.layout.activity_main);</code>
<code> </code><code>LayoutInflater inflater=getLayoutInflater();</code>
<code> </code><code>viewPager=(ViewPager) findViewById(R.id.viewpager);</code>
<code> </code><code>view1=inflater.inflate(R.layout.one,</code><code>null</code><code>);</code>
<code> </code><code>view1.setBackgroundColor(Color.RED);</code>
<code> </code><code>view2=inflater.inflate(R.layout.two,</code><code>null</code><code>);</code>
<code> </code><code>view2.setBackgroundColor(Color.BLACK);</code>
<code> </code><code>view3=inflater.inflate(R.layout.three,</code><code>null</code><code>);</code>
<code> </code><code>view3.setBackgroundColor(Color.BLUE);</code>
<code> </code><code>viewList=</code><code>new</code> <code>ArrayList<View>();</code>
<code> </code><code>viewList.add(</code><code>new</code> <code>View(</code><code>this</code><code>));</code>
<code> </code><code>viewList.add(view1);</code>
<code> </code><code>viewList.add(view2);</code>
<code> </code><code>viewList.add(view3);</code>
<code> </code><code>viewPager.setAdapter(</code><code>new</code> <code>MyViewPagerAdapter(viewList));</code>
<code> </code><code>viewPager.setCurrentItem(</code><code>1</code><code>);</code>
自定义的MyViewPagerAdapter:
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<code>private</code> <code>class</code> <code>MyViewPagerAdapter </code><code>extends</code> <code>PagerAdapter</code>
<code> </code><code>{</code>
<code> </code><code>@Override</code>
<code> </code><code>public</code> <code>void</code> <code>destroyItem(ViewGroup container, </code><code>int</code> <code>position, Object object) {</code>
<code> </code><code>// TODO Auto-generated method stub</code>
<code> </code><code>container.removeView(myList.get(position));</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>Object instantiateItem(ViewGroup container, </code><code>int</code> <code>position) {</code>
<code> </code><code>container.addView(myList.get(position), </code><code>0</code><code>);</code>
<code> </code><code>return</code> <code>myList.get(position);</code>
<code> </code><code>private</code> <code>List<View> myList;</code>
<code> </code><code>public</code> <code>MyViewPagerAdapter(List<View> list) {</code>
<code> </code><code>myList=list;</code>
<code> </code><code>public</code> <code>int</code> <code>getCount() {</code>
<code> </code><code>return</code> <code>myList.size();</code>
<code> </code><code>public</code> <code>boolean</code> <code>isViewFromObject(View arg0, Object arg1) {</code>
<code> </code><code>return</code> <code>arg0==(arg1);</code>
<code> </code>
<code> </code><code>}</code>
上面写完之后还是需要设置一下页面setOnPageChangeListener的事件,循环的重点就是切换到一个空的View时将页面替换掉就可以:
<code>viewPager.setOnPageChangeListener(</code><code>new</code> <code>OnPageChangeListener() {</code>
<code> </code>
<code> </code><code>@Override</code>
<code> </code><code>public</code> <code>void</code> <code>onPageSelected(</code><code>int</code> <code>arg0) {</code>
<code> </code><code>// TODO Auto-generated method stub</code>
<code> </code><code>System.out.println(</code><code>"onPageSelected = "</code> <code>+ arg0);</code>
<code> </code><code>if</code><code>(arg0 == </code><code>0</code><code>)</code>
<code> </code><code>viewPager.setCurrentItem(viewList.size()-</code><code>2</code><code>);</code>
<code> </code><code>else</code> <code>if</code><code>(arg0 == viewList.size() - </code><code>1</code><code>)</code>
<code> </code><code>viewPager.setCurrentItem(</code><code>1</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>void</code> <code>onPageScrolled(</code><code>int</code> <code>arg0, </code><code>float</code> <code>arg1, </code><code>int</code> <code>arg2) {</code>
<code> </code>
<code> </code><code>public</code> <code>void</code> <code>onPageScrollStateChanged(</code><code>int</code> <code>arg0) {</code>
<code> </code><code>});</code>
最后看一张切换中的效果吧:
Demo比较简单,不过对于入门应该是足够了~
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4149395.html,如需转载请自行联系原作者