viewpager的作用:实现滑动分页
4.设置pageradapteer
3.添加标题
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);
}
运行效果