viewpager对于我们来说并不陌生,用到的地方很多,也很方便,这里我就简单的处理一下滑动和点击veiwpager切换,废话不多说,上代码:
布局很简单:不多说
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="80dp">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@color/colorWhite"></android.support.v4.view.ViewPager>
</RelativeLayout>
在Activity中 ,
注:这里只是部分代码
主要就是设置viewpager的点击监听,计算手指按下、抬起是的X坐标(防抖动处理),然后设置就行……
private ArrayList<View> pageview;
//设置无标题栏
viewPager = (ViewPager) findViewById(R.id.viewPager);
View view1 = getLayoutInflater().inflate(R.layout.repair_child_item, null);
View view2 = getLayoutInflater().inflate(R.layout.repair_child_item2, null);
pageview = new ArrayList<View>();
pageview.add(view1);
pageview.add(view2);
//viwepager绑定适配器
viewPager.setAdapter(mPagerAdapter);
//默认选中第一个
tv_repair.setVisibility(View.VISIBLE);
tv_repair.setText(datas.get(0));
//设置触摸事件
viewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downX = event.getX();
break;
case MotionEvent.ACTION_UP:
upX = event.getX();
//防抖动
if ((upX - downX) < 10) {
i++;
viewPager.setCurrentItem(i);
}
if (i == pageview.size() - 1) {
iv_change.setVisibility(View.GONE);
}
break;
}
return false;
}
});
//viewPager设置滑动监听\界面改变监听
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
//正在滑动 pager处于正在拖拽中
Log.d("测试代码", "onPageScrollStateChanged=======正在滑动" + "SCROLL_STATE_DRAGGING");
} else if (state == ViewPager.SCROLL_STATE_SETTLING) {
//pager正在自动沉降,相当于松手后,pager恢复到一个完整pager的过程
Log.d("测试代码", "onPageScrollStateChanged=======自动沉降" + "SCROLL_STATE_SETTLING");
} else if (state == ViewPager.SCROLL_STATE_IDLE) {
//空闲状态 pager处于空闲状态
Log.d("测试代码", "onPageScrollStateChanged=======空闲状态" + "SCROLL_STATE_IDLE");
}
}
});
}
viewpager的适配器
//数据适配器
PagerAdapter mPagerAdapter = new PagerAdapter() {
@Override
//获取当前窗体界面数
public int getCount() {
// TODO Auto-generated method stub
return pageview.size();
}
@Override
//断是否由对象生成界面
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
//是从ViewGroup中移出当前View
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(pageview.get(arg1));
}
//返回一个对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(pageview.get(arg1));
return pageview.get(arg1);
}
};