看下效果圖吧,網上好多都是放美女的,我還是簡單點就放個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,如需轉載請自行聯系原作者