您的位置:首页 > 移动开发 > Android开发

滑动实现多个布局的切换——ViewPager的使用

2013-01-03 21:36 573 查看
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;
}

}
}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ANDROID ViewPager