天天看点

Android之ViewPager循环Demo

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

Android之ViewPager循环Demo

activity_main.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code>&lt;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>&gt;</code>

<code> </code><code>&lt;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>/&gt;</code>

<code>&lt;/RelativeLayout&gt;</code>

 需要切换的三个布局文件,one.xml,two.xml,three.xml,one.xml的代码,其他两个类似就不贴代码了:

<code>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code><code>?&gt;</code>

<code>&lt;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>&gt;</code>

<code>    </code> 

<code>    </code><code>&lt;TextView</code>

<code>        </code><code>android:text=</code><code>"周永康被开"</code>

<code>        </code><code>android:layout_height=</code><code>"wrap_content"</code><code>/&gt;</code>

<code>&lt;/LinearLayout&gt;</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&lt;View&gt;();</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&lt;View&gt; myList;</code>

<code>        </code><code>public</code>   <code>MyViewPagerAdapter(List&lt;View&gt; 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>

  最后看一张切换中的效果吧:

Android之ViewPager循环Demo

Demo比较简单,不过对于入门应该是足够了~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4149395.html,如需转载请自行联系原作者

继续阅读