实现四个view间的相互滑动
Activity
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
public class MainActivity extends Activity {
private ViewPager viewPager;
private int drawables[] = {R.drawable.biz_ad_new_version1_img0,R.drawable.biz_ad_new_version1_img1,R.drawable.biz_ad_new_version1_img2,R.drawable.biz_ad_new_version1_img3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) this.findViewById(R.id.viewPage);
List<View> views = new ArrayList<View>();
for(int i=0;i<drawables.length;i++){
LayoutInflater inflater = getLayoutInflater().from(this);
View view = inflater.inflate(R.layout.frame_layout, null);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
imageView.setImageResource(drawables[i]);
views.add(view);
}
viewPager.setAdapter(new MyAdapter2(this, views));
viewPager.setCurrentItem(0);
}
}
//适配器
class MyAdapter2 extends PagerAdapter{
ArrayList<View> views ;
Context context;
public MyAdapter2(Context context,List list){
this.views = (ArrayList<View>) list;
this.context = context;
}
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == (arg1);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
System.out.println("--------------------remove position"+position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position));
System.out.println("--------------------add position"+position);
return views.get(position);
}
}
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.pageview.MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPage"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/imageView"
/>
</FrameLayout>
图片资源请自行添加
当你实现一个PagerAdapter时,至少需要覆盖以下几个方法:
instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object)
getCount()
isViewFromObject(View, Object)
destroyItem()
该方法实现的功能是移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。
getCount ()
返回当前有效视图的个数。
instantiateItem (ViewGroup container, int position)
这个函数的实现的功能是创建指定位置的页面视图。适配器有责任增加即将创建的View视图到这里给定的container中,这是为了确保在finishUpdate(viewGroup)返回时this is be done!
返回值:返回一个代表新增视图页面的Object(Key),这里没必要非要返回视图本身,也可以这个页面的其它容器。其实我的理解是可以代表当前页面的任意值,只要你可以与你增加的View一一对应即可,比如position变量也可以做为Key(最后我们举个例子试试可不可行)
isViewFromObject (View view, Object object)
功能:该函数用来判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View)
返回值:如果对应的是同一个View,返回True,否则返回False。
函数详情可参考:http://blog.csdn.net/harvic880925/article/details/38487149