效果图:
实现了三个view间的相互滑动
第一个VIEW向第二个VIEW滑动 第二个VIEW向第三个VIEW滑动
一、新建项目,引入ViewPager控件
ViewPager。它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换.
1.在主布局文件里加入:
其中 <android.support.v4.view.ViewPager /> 是ViewPager对应的组件,要将其放到想要滑动的位置
2.新建三个layout,用于滑动切换视图
布局代码分别如下:
layout_one.xml
layout_two.xml
layout_three.xml
二.代码实战
package com.nyl.viewpager.activity.viewpager;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MainActivity extends Activity { //view1,view2,view3对应我们的三个layout,既layout_one.xml;layout_two.xml;layout_three.xml private View view1,view2,view3; //viewList是一个View数组,盛装上面三个View private ListviewList; //对应的viewPager private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件 viewPager = (ViewPager) findViewById(R.id.viewpager); LayoutInflater inflater = getLayoutInflater(); view1 = inflater.inflate(R.layout.layout_one,null); view2 = inflater.inflate(R.layout.layout_two,null); view3 = inflater.inflate(R.layout.layout_three,null); //将要分布显示的view装入数组中 viewList = new ArrayList (); //将实例化的view1,view2,view3添加的viewList中 viewList.add(view1); viewList.add(view2); viewList.add(view3); PagerAdapter pagerAdapter = new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } //返回要滑动的View的个数 @Override public int getCount() { return viewList.size(); } //从当前container(容器)中删除指定位置(position)的View @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); } //instantiateItem()做了两件事,第一:将当前视图添加到container中,第二:返回当前View @Override public Object instantiateItem(ViewGroup container, int position){ container.addView(viewList.get(position)); return viewList.get(position); } }; viewPager.setAdapter(pagerAdapter); }}