viewpager

viewpager的作用:实现滑动分页

viewpager的实现过程:1.加入相应的.jar包 ————>2.在布局文件中加入viewpager——>3.获取viewpager加载显示的页——>4.设置它的adper

与其相似的过程listview,Spinner,gridview等

viewpager的注意点:加载的页是静态的

首先主要代码

三个布局文件可以随便加,但是是静态的,不能在java代码中修改

package com.example.virwpage1;

import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends Activity {

   ViewPager views;
   List<View> ls;
    View view1;
    View view2;
    View view3;
   
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initi_way();
		//设置pageradapter,四个方法都需要重写
		PagerAdapter page=new PagerAdapter() {
			
			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				// TODO Auto-generated method stub
				 return arg0 == arg1;
			}
			
			@Override
			public int getCount() {
				//获取加入布局的个数
				return ls.size();
			}

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				//移除划过去的view
                    container.removeView(ls.get(position));
			}

			//使用的参数是ViewGroup 
			public Object instantiateItem(ViewGroup container, int position) {
				// TODO Auto-generated method stub
				  //显示当前的view
			       container.addView(ls.get(position));
			       return ls.get(position);
			}
			
		};
		 views.setAdapter(page);
	}

	private void initi_way() {
		//获取viewpager
		views=(ViewPager) findViewById(R.id.viewpager);
		//获取三个布局
		LayoutInflater inflater=getLayoutInflater();
		view1=inflater.inflate(R.layout.view_main, null);
		view2=inflater.inflate(R.layout.view1_main, null);
		view3=inflater.inflate(R.layout.view2_main, null);
		ls=new ArrayList<View>();
		//加入三个布局
		ls.add(view1);
		ls.add(view2);
		ls.add(view3);
	}


	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


1.加入相应的.jar包



2,在布局文件中加入viewpager

</pre><pre name="code" class="java"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="com.example.testviewpage_1.MainActivity" >

<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/mtab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top" /> -->
</android.support.v4.view.ViewPager>
</RelativeLayout>

3.获取viewpager并且加入页面

private void initi_way() {
		//获取viewpager
		views=(ViewPager) findViewById(R.id.viewpager);
		//获取三个布局
		LayoutInflater inflater=getLayoutInflater();
		view1=inflater.inflate(R.layout.view_main, null);
		view2=inflater.inflate(R.layout.view1_main, null);
		view3=inflater.inflate(R.layout.view2_main, null);
		ls=new ArrayList<View>();
		//加入三个布局
		ls.add(view1);
		ls.add(view2);
		ls.add(view3);
	}

4.设置pageradapteer

PagerAdapter page=new PagerAdapter() {
			
			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				// TODO Auto-generated method stub
				 return arg0 == arg1;
			}
			
			@Override
			public int getCount() {
				//获取加入布局的个数
				return ls.size();
			}

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				//移除划过去的view
                    container.removeView(ls.get(position));
			}

			//使用的参数是ViewGroup 
			public Object instantiateItem(ViewGroup container, int position) {
				// TODO Auto-generated method stub
				  //显示当前的view
			       container.addView(ls.get(position));
			       return ls.get(position);
			}
			
		};
		 views.setAdapter(page);
	}


如何在viewpager中加入pagertapstrip

主要java代码

package com.example.virwpage1;

import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends Activity {

   ViewPager views;
   PagerTabStrip ptp;
   List<View> ls;
   List<String> lp; 
    View view1;
    View view2;
    View view3;
   
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initi_way();
		tijia_way();
		//设置pageradapter,四个方法都需要重写
		PagerAdapter page=new PagerAdapter() {
			
			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				// TODO Auto-generated method stub
				 return arg0 == arg1;
			}
			
			//显示当前标题
			public CharSequence getPageTitle(int position) {
				// TODO Auto-generated method stub
				return lp.get(position);
			}

			@Override
			public int getCount() {
				//获取加入布局的个数
				return ls.size();
			}

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				//移除划过去的view
                    container.removeView(ls.get(position));
			}

			//使用的参数是ViewGroup 
			public Object instantiateItem(ViewGroup container, int position) {
				// TODO Auto-generated method stub
				  //显示当前的view
			       container.addView(ls.get(position));
			       return ls.get(position);
			}
			
		};
		 views.setAdapter(page);
	}

	private void tijia_way() {
		ls=new ArrayList<View>();
		lp=new ArrayList<String>();
		//加入三个布局
		ls.add(view1);
		ls.add(view2);
		ls.add(view3);
		//添加标题
		for(int i=1;i<4;i++){
			lp.add("第"+i+"页");
			
		}
		
	}

	private void initi_way() {
		//获取viewpager
		views=(ViewPager) findViewById(R.id.viewpager);
		//获取pagertapstrip
		ptp=(PagerTabStrip) findViewById(R.id.mtab);
		//获取三个布局
		LayoutInflater inflater=getLayoutInflater();
		view1=inflater.inflate(R.layout.view_main, null);
		view2=inflater.inflate(R.layout.view1_main, null);
		view3=inflater.inflate(R.layout.view2_main, null);
		
	}


	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
主要xml代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
   <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/mtab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
   />
   </android.support.v4.view.ViewPager>
</RelativeLayout>
作用:在顶端有相应的标题

实现过程:1.在xml的viewpager中加入pagertabstrip——>2.获取pagertabstrip——>3.添加标题——>4.重写getpagetitle方法

1.在xml的viewpager中加入pagertabstrip控件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
   <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/mtab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
   />
   </android.support.v4.view.ViewPager>
</RelativeLayout>
2.获取pagertabstrip

	private void initi_way() {
		//获取viewpager
		views=(ViewPager) findViewById(R.id.viewpager);
		//获取pagertapstrip
		ptp=(PagerTabStrip) findViewById(R.id.mtab);
		//获取三个布局
		LayoutInflater inflater=getLayoutInflater();
		view1=inflater.inflate(R.layout.view_main, null);
		view2=inflater.inflate(R.layout.view1_main, null);
		view3=inflater.inflate(R.layout.view2_main, null);
		
	}


3.添加标题

private void tijia_way() {
		ls=new ArrayList<View>();
		lp=new ArrayList<String>();
		//加入三个布局
		ls.add(view1);
		ls.add(view2);
		ls.add(view3);
		//添加标题
		for(int i=1;i<4;i++){
			lp.add("第"+i+"页");
			
		}
		
	}


4.重写getpagertilte

	PagerAdapter page=new PagerAdapter() {
			
			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				// TODO Auto-generated method stub
				 return arg0 == arg1;
			}
			
			//显示当前标题
			public CharSequence getPageTitle(int position) {
				// TODO Auto-generated method stub
				return lp.get(position);
			}

			@Override
			public int getCount() {
				//获取加入布局的个数
				return ls.size();
			}

			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				//移除划过去的view
                    container.removeView(ls.get(position));
			}

			//使用的参数是ViewGroup 
			public Object instantiateItem(ViewGroup container, int position) {
				// TODO Auto-generated method stub
				  //显示当前的view
			       container.addView(ls.get(position));
			       return ls.get(position);
			}
			
		};
		 views.setAdapter(page);
	}


运行效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值