ViewPager就是实现实现屏幕间的切换,现在我们就先只是先屏幕间切换,了解下ViewPager的使用流程,热下身,下一篇我们再给它添加标题以及点击响应和随着屏幕切换随着滑动的下划线(指示器)。
先大概说下使用ViewPager的三个步骤:
1.在布局中加入ViewPager(ViewPager是自定义view,不会像其他控件一样,打出一部分会弹出自动匹配的所有项,所以没出来别怀疑自己写错了,嘻嘻~~)<android.support.v4.ViewPager />
2.准备要显示的页卡并加载
3.在Activity里实例化ViewPager组件,并设置它的Adapter
main.xml 总布局很简单就是一个ViewPager
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</RelativeLayout>
layout1.xml 这是第一个页卡的布局,其他两个类似,只是text有所不同,所以就不贴了
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/ic_launcher"/>
<TextView
android:text="i am the text11111111"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/image1"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
下面看java代码
主函数代码:
package com.example.viewpagertest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
public class MainActivity extends Activity {
ViewPager viewpager;
viewPagerAdapter myAdapter;
View view1,view2,view3;
List<View> views;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//实例化页卡
view1=findViewById(R.layout.layout1);
view2=findViewById(R.layout.layout2);
view3=findViewById(R.layout.layout3);
//从xml中取出view
LayoutInflater lf=LayoutInflater.from(this);
view1=lf.inflate(R.layout.layout1, null);
view2=lf.inflate(R.layout.layout2, null);
view3=lf.inflate(R.layout.layout3, null);
//把各个页卡的view添加到列表中
views=new ArrayList<View>();
views.add(view1);
views.add(view2);
views.add(view3);
//实例化ViewPager
viewpager=(ViewPager)this.findViewById(R.id.viewPager);
//实例化适配器
myAdapter=new viewPagerAdapter(views);
//给ViewPager添加适配器
viewpager.setAdapter(myAdapter);
}
}
适配器代码
package com.example.viewpagertest;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class viewPagerAdapter extends PagerAdapter{
//界面列表
private List<View> views;
public viewPagerAdapter(List<View> views){
this.views=views;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(views.get(position));
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if(views!=null){
return views.size();
}
return 0;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(views.get(position));
return views.get(position);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return (arg0==arg1);
}
}
看主函数,思路应该很简单吧,就这样就可以实现屏幕间的滑动了哦~~
代码很简单,主要是让像我一样的新手对ViewPager大概熟悉下,主函数我就不详细讲解了,给大家介绍下PagerAdapter的几个重要的函数吧:
destroyItem()这个函数是将不再显示的视图从ViewPager的视图集合中移除掉
isViewFromObject()用于判断View和Object是否是为同一个View
instantiateItem()类似于BaseAdapter里面的getView()
好啦,今天就先对ViewPager大概有个了解,下一篇我们将实现贴合实际应用的Demo(效果图如下):