Android viewPager实现翻动
1.ViewFlipper控件虽然也可以实现翻页功能,但是如果想要实现像UC浏览器,自带图库的翻动中还可以看到前一页的一半,后一页的一半这样的效果就要用到这个ViewPager啦。
他是android官方support包里面的。
2.添加这个包,你可以手动build path里面添加。也可以用Eclipse控件添加,首先,右键点击项目-》Android tool-》add compatibility library联网的状态下就可以自动加入的了。
主要是这个包:Android-surpport-v4.jar
3.ViewPager的用法。1.在你的XML布局里面想其他控件一样设定好属性,不过控件名就要用全名了:
<android.support.v4.view.ViewPager
android:id="@+id/myviewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
这样以后呢,就要再写一个ViewPager的专用Adapter,要继承PagerAdapter:
这里我给出个参考吧:
package com.myTest; import java.util.ArrayList; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; public class MyViewPageAdapter extends PagerAdapter{ private ArrayList<View> views=new ArrayList<View> (); public MyViewPageAdapter(ArrayList<View> views){ this.views=views; } @Override public void destroyItem(View container, int position, Object object) { // TODO Auto-generated method stub ((ViewPager)container).removeView(views.get(position)); } @Override public int getCount() { // TODO Auto-generated method stub return views.size(); } @Override public Object instantiateItem(View arg0, int arg1){ ((ViewPager)arg0).addView(views.get(arg1),0); return views.get(arg1); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==(arg1); } }
这样之后,把你需要展示出来的每一个页面也就是每一个View放到一个ArrayList里面保存起来。传过去给Adapter。
最后的话,就是把ViewPager实例化,也就是findViewById()了。接着就调用ViewPager的setAdapter就OK了
这里是我的运行效果:
ViewPager的onPageChangeListener里面的一些方法参数:
onPageSelected(int arg0){
}
arg0是表示你当前选中的页面,这事件是在你页面跳转完毕的时候调用的。
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
} arg0 ==1的时候表示正在滑动,arg0==2的时候表示滑动完毕了,arg0==0的时候表示什么都没做,就是停在那。
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}表示在前一个页面滑动到后一个页面的时候,在前一个页面滑动前调用的方法。