当前位置: 首页 > 工具软件 > ViewPager > 使用案例 >

我的ViewPager

司马飞鸿
2023-12-01
public class MainActivity extends Activity {

	private ViewPager viewpager;
	private ArrayList<View> viewList;
	private ArrayList<String> titleList;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		viewpager=(ViewPager)this.findViewById(R.id.viewpager);
		
		//加载要显示的页卡
		LayoutInflater lf=getLayoutInflater().from(this);
		View view1 = lf.inflate(R.layout.one, null);
		View view2 = lf.inflate(R.layout.two, null);
		View view3 = lf.inflate(R.layout.three, null);
		
		viewList=new ArrayList<View>();  // 将要分页显示的View装入数组中
		viewList.add(view1);
		viewList.add(view2);
		viewList.add(view3);
		
		 titleList = new ArrayList<String>();// 每个页面的Title数据  
	     titleList.add("标题1");  
	     titleList.add("标题2");  
	     titleList.add("标题3");
		
		PagerAdapter  adapter=new PagerAdapter() {
			
			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				
				return arg0==arg1;
			}
			
			@Override
			public int getCount() {
				
				return viewList.size();
			}
			
			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				container.removeView(viewList.get(position)); 
			}
			
			@Override
			public CharSequence getPageTitle(int position) {

				return titleList.get(position);
			}
			
						
			@Override
			public Object instantiateItem(ViewGroup container, int position) {
				container.addView(viewList.get(position));  
				return viewList.get(position);
			}
			
			
		};
		
		viewpager.setAdapter(adapter);
	}

}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
    
    <android.support.v4.view.PagerTabStrip    
            android:id="@+id/pagertab"    
            android:layout_width="wrap_content"    
            android:layout_height="wrap_content"   
            
            android:layout_gravity="top"/>    
           
 </android.support.v4.view.ViewPager>


</LinearLayout>


2 有标题


public class MainActivity extends Activity {

	private ViewPager viewpager;
	private ArrayList<View> viewList;
	private ArrayList<String> titleList;
	private TextView textView1;
	private TextView textView2;
	private TextView textView3;
	private int offset = 0;// 动画图片偏移量  
    private int currIndex = 0;// 当前页卡编号 
    private int bmpW;// 动画图片宽度
	private ImageView imageView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		InitImageView();   //这个要放在前面
		
		// 初始化头标 
		textView1 = (TextView) findViewById(R.id.text1);  
        textView2 = (TextView) findViewById(R.id.text2);  
        textView3 = (TextView) findViewById(R.id.text3); 
        
        textView1.setOnClickListener(new MyOnClickListener(0));  
        textView2.setOnClickListener(new MyOnClickListener(1));  
        textView3.setOnClickListener(new MyOnClickListener(2)); 
        
		viewpager=(ViewPager)this.findViewById(R.id.vPager);
		
		//加载要显示的页卡
		LayoutInflater lf=getLayoutInflater();
		View view1 = lf.inflate(R.layout.one, null);
		View view2 = lf.inflate(R.layout.two, null);
		View view3 = lf.inflate(R.layout.three, null);
		
		viewList=new ArrayList<View>();  // 将要分页显示的View装入数组中
		viewList.add(view1);
		viewList.add(view2);
		viewList.add(view3);
		
		viewpager.setAdapter(new MyViewPagerAdapter(viewList));  //添加适配器
		viewpager.setCurrentItem(0);
		viewpager.setOnPageChangeListener(new MyOnPageChangeListener());  

	}
	
	private class MyOnClickListener implements OnClickListener{

		private int index=0;  
		public MyOnClickListener(int i) {
			index=i;
		}
		
		@Override
		public void onClick(View v) {
			viewpager.setCurrentItem(index);  
			
		}
		
	}
	
	// //初始化动画,这个就是页卡滑动时,下面的横线也滑动的效果,在这里需要计算一些数据 
	private void InitImageView() {
		imageView= (ImageView) findViewById(R.id.cursor);
		bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.tab_bottom_line_c).getWidth();// 获取图片宽度
		DisplayMetrics dm = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dm);  
		int screenW = dm.widthPixels;// 获取分辨率宽度
		offset = (screenW / 3 - bmpW) / 2;// 计算偏移量
		Matrix matrix = new Matrix();  
        matrix.postTranslate(offset, 0);
        imageView.setImageMatrix(matrix);// 设置动画初始位置 
			
	}

	public class MyOnPageChangeListener implements OnPageChangeListener{

		int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量  
        int two = one * 2;// 页卡1 -> 页卡3 偏移量
        
		@Override
		public void onPageScrollStateChanged(int arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onPageScrolled(int arg0, float arg1, int arg2) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onPageSelected(int arg0) {
			Animation animation = new TranslateAnimation(one*currIndex, one*arg0, 0, 0);
			currIndex = arg0;  
            animation.setFillAfter(true);// True:图片停在动画结束位置  
            animation.setDuration(300);  
            imageView.startAnimation(animation);  
            Toast.makeText(MainActivity.this, "您选择了"+ viewpager.getCurrentItem()+"页卡", Toast.LENGTH_SHORT).show();  
		}	
	}
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ImageView  
       android:id="@+id/cursor"  
       android:layout_width="fill_parent"  
       android:layout_height="wrap_content"  
       android:scaleType="matrix"  
       android:src="@drawable/tab_bottom_line_c" />  
   
   <LinearLayout  
       android:id="@+id/linearLayout1"  
       android:layout_width="fill_parent"  
       android:layout_height="40.0dip"  
       android:background="#FFFFFF" >  
  
       <TextView  
           android:id="@+id/text1"  
           android:layout_width="fill_parent"  
           android:layout_height="fill_parent"  
           android:layout_weight="1.0"  
           android:gravity="center"  
           android:text=" @我"  
           android:textColor="#000000"  
           android:textSize="20.0dip" />  
  
       <TextView  
           android:id="@+id/text2"  
           android:layout_width="fill_parent"  
           android:layout_height="fill_parent"  
           android:layout_weight="1.0"  
           android:gravity="center"  
           android:text="评论"  
           android:textColor="#000000"  
           android:textSize="20.0dip" />  
  
       <TextView  
           android:id="@+id/text3"  
           android:layout_width="fill_parent"  
           android:layout_height="fill_parent"  
           android:layout_weight="1.0"  
           android:gravity="center"  
           android:text="私信"  
           android:textColor="#000000"  
           android:textSize="20.0dip" />  
   </LinearLayout>  
   
   <android.support.v4.view.ViewPager  
       android:id="@+id/vPager"  
       android:layout_width="wrap_content"  
       android:layout_height="0dp"  
       android:layout_gravity="center"  
       android:layout_weight="1.0"  
       android:background="#000000"  
       android:flipInterval="30"  
       android:persistentDrawingCache="animation" />
   

</LinearLayout>


 类似资料: