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


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;
		}
		
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值