a) 导入android-support-v4.jar;
i. 这个jar包是1.6+才有的,可以通过更新通过SDK Manager更新最新版android compatibility package, revision 3
然后在eclipse中工程上点击右键,选择android tools -> add compatibility library即可完成安装
ii.上面做法是官方的做法,也可以直接下载这个包,然后再手工导入到工程
b) 创建一个布局文件,放ViewPager ,要用完整路径
创建多个切换的子页面布局
c) 继承ViewPagerAdapter 创建ViewPager的适配器类,复写其他的相关方法
d) 为ViewPager设置适配器
e) 为ViewPager设置监听器
package can.opa.mainTab;
import java.util.ArrayList;
import java.util.List;
import can.opa.R;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
public class tabActivity_02 extends Activity{
private PagerViewAdapter adapter;
private LayoutInflater mInflater;
private ViewPager viewPager;
private View btn_layout = null; //子界面1
private View voice_layout = null; //子界面2
private List<View> listViews; //存放子界面的布局
private String[] title_text = {"按键控制","语音控制"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.tab_02);
//初始化布局
initView();
}
public void initView(){
//找到ViewPager
viewPager = (ViewPager)findViewById(R.id.viewpagerLayout);
//实例化适配器
adapter = new PagerViewAdapter();
//将所有子界面布局文件加到listViews中
mInflater = getLayoutInflater();
btn_layout = mInflater.inflate(R.layout.btn_control_page, null);
voice_layout = mInflater.inflate(R.layout.voice_control_page, null);
listViews = new ArrayList<View>();
listViews.add(btn_layout);
listViews.add(voice_layout);
viewPager.setAdapter(adapter);
}
//页面切换的监听器
class pagerViewListener implements OnPageChangeListener{
//三种状态,0为空闲,1为滑动,2为加载完毕
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
//界面1滑动到界面2,在界面1滑动前调用
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
//从界面1到界面2,2页加载后调用...
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}
}
class PagerViewAdapter extends PagerAdapter{
//返回页面的数量
@Override
public int getCount() {
// TODO Auto-generated method stub
return listViews.size();
}
//初始化container位置的界面
@Override
public Object instantiateItem(View container, int position) {
// TODO Auto-generated method stub
((ViewPager) container).addView(listViews.get(position), 0);
return listViews.get(position);
}
//销毁position的界面
@Override
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager) container).removeView(listViews.get(position));
}
//判断是否由对象生成界面
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
}
}