Android viewpage滑动选项卡。根据android.support.v4.view.ViewPager的jar包。自定义CustomViewPaper继承ViewPager。这个也是需要适配器的,只要把需要滑动的布局用view添加LinkedList中,然后对viewPaper进行绑定适配器,进行传出LinkedList的数据源。先看看效果图。

本文源码地址下载:点击 

一、效果图

Android viewpage滑动选项卡_第1张图片


二、项目结构

Android viewpage滑动选项卡_第2张图片


三、自定义CustomViewPaper继承自android.support.v4.view.ViewPager

package com.org.viewpager;import android.content.Context;import android.graphics.PointF;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;/** * 自定义android.support.v4.view.ViewPager * @author Administrator * */public class CustomViewPaper extends ViewPager {private PointF mDownPointF = new PointF(); private onSingleTouchListener mOnListener;public CustomViewPaper(Context context) {super(context);// TODO Auto-generated constructor stub}public CustomViewPaper(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}@Overridepublic boolean onInterceptTouchEvent(MotionEvent argo) {return true;}@Overridepublic boolean onTouchEvent(MotionEvent argo) {PointF currentPointF = new PointF(argo.getX(), argo.getY());if (argo.getAction() == MotionEvent.ACTION_DOWN) {mDownPointF.x = argo.getX();mDownPointF.y = argo.getY();getParent().requestDisallowInterceptTouchEvent(true);}else if (argo.getAction() == MotionEvent.ACTION_MOVE) {getParent().requestDisallowInterceptTouchEvent(true);}else if (argo.getAction() == MotionEvent.ACTION_UP) {if (currentPointF == mDownPointF) {if (mOnListener != null) mOnListener.onSingleTouch();return true;}}return super.onTouchEvent(argo);}public interface onSingleTouchListener {public abstract void onSingleTouch();}public void setOnSingleTouchListener(onSingleTouchListener onListener) {mOnListener = onListener;}}


四、看看你怎样调用自定义控件,以及添加数据源,绑定每一页控件的id,绑定适配器。

package com.example.viewpager;import java.util.LinkedList;import java.util.List;import com.org.viewpager.CustomViewPaper;import android.os.Bundle;import android.os.Parcelable;import android.app.Activity;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends Activity {//装载view的LinkedList,是选项卡的内容private LinkedList mpageList = null;//各个选项卡里面的控件private TextView mpageTextView1;private TextView mpageTextView2;private TextView mpageTextView3;//提示选项卡选中状态的imagviewprivate ImageView mImageView1;private ImageView mImageView2;private ImageView mImageView3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {CustomViewPaper viewPaper = (CustomViewPaper) findViewById(R.id.viewPaper1);mpageList = new LinkedList();//加载每个选项卡的布局View page1 = getLayoutInflater().inflate(R.layout.view_page_1, null);View page2 = getLayoutInflater().inflate(R.layout.view_page_2, null);View page3 = getLayoutInflater().inflate(R.layout.view_page_3, null);//把页面选项卡添加到LinkedList中,给适配器的数据源mpageList.add(page1);mpageList.add(page2);mpageList.add(page3);//自定义选项卡绑定适配器viewPaper.setAdapter(new CustomPagerAdapter(mpageList));//各个选项卡里面空间的绑定mpageTextView1 = (TextView) page1.findViewById(R.id.TextView1);mpageTextView2 = (TextView) page2.findViewById(R.id.TextView1);mpageTextView3 = (TextView) page3.findViewById(R.id.TextView1);//圆圈提示三个选项卡的状态ImageView的绑定mImageView1 = (ImageView)findViewById(R.id.imageViewPage_0);mImageView2 = (ImageView)findViewById(R.id.imageViewPage_1);mImageView3 = (ImageView)findViewById(R.id.imageViewPage_2);//设置初始化的选定第一个选项卡以及状态viewPaper.setCurrentItem(0);mImageView1.setImageResource(R.drawable.page_shape_select);mImageView2.setImageResource(R.drawable.page_shape_normal);mImageView3.setImageResource(R.drawable.page_shape_normal);//选项卡滑动监听器viewPaper.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {switch (arg0) {case 0:mpageTextView1.setText("正在显示第一页。。。");mImageView1.setImageResource(R.drawable.page_shape_select);mImageView2.setImageResource(R.drawable.page_shape_normal);mImageView3.setImageResource(R.drawable.page_shape_normal);break;case 1:mpageTextView2.setText("正在显示第二页。。。");mImageView1.setImageResource(R.drawable.page_shape_normal);mImageView2.setImageResource(R.drawable.page_shape_select);mImageView3.setImageResource(R.drawable.page_shape_normal);break;case 2:mpageTextView3.setText("正在显示第三页。。。");mImageView1.setImageResource(R.drawable.page_shape_normal);mImageView2.setImageResource(R.drawable.page_shape_normal);mImageView3.setImageResource(R.drawable.page_shape_select);break;default:break;}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});}/** * 自定义滑动选项卡的适配器 * @author Administrator * */public class CustomPagerAdapter extends PagerAdapter {public List mListViews;public CustomPagerAdapter(List mListViews) {this.mListViews = mListViews;}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView(mListViews.get(arg1));}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic int getCount() {return mListViews.size();}@Overridepublic Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(mListViews.get(arg1), 0);return mListViews.get(arg1);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == (arg1);}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}}}

五、简单的主布局文件activity_main

                                            


本文源码地址下载:点击 

更多相关文章

  1. Android -- 跨应用绑定service(AIDL)
  2. [置顶] 基于ichartjs图形库在android上使用HTML动态实现多数据源
  3. 关于Android Studio中第三方jar包的Javadoc绑定
  4. 一个功能强大的RecyclerViewAdapter 适配器 BaseRecyclerViewAda
  5. Android系统在新进程中启动自定义服务过程(startService)的原理分

随机推荐

  1. android 多点触摸绘画demo
  2. android 利用socket 发送Json数据demo
  3. Android(Java):jni源代码
  4. Android(安卓)将TabHost放在最下方显示
  5. Announcing the 2016 Android(安卓)Exper
  6. android studio 生成 release aar
  7. 关于Android/java的复杂对象的深拷贝和浅
  8. android 休眠
  9. Android电源管理,低电量报警
  10. android 图片的压缩