真正的新手使用ViewPager的总结

来源:互联网 发布:sql 返回true false 编辑:程序博客网 时间:2024/06/05 07:29

Android非自定义之组件----ViewPager

一、我自己对ViewPager的理解

通常被用来做页面菜单、滑动广告之类的,就是可以做成滑动切换的一个组件。

二、使用最基本的ViewPager的流程(基本步骤)

1.在布局文件创建添加viewpager组件

2.在引用该布局文件的activity中声明实例化viewpager(注意实例化顺序,findViewById所放置的位置,小心出现空指针)

3.viewpager所切换的view需要一个list去装载,而这些view需要我们去创建layout文件去实现。而实例化引用view的有基本固定的模板。一会会写明。

4.最后要为viewpager的对象去设置Adapter。(有两种方式)


三、详细用法


1.在布局文件添加viewpager组件

注意下viewpager组件的写法,不同于其他组件

    <android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="fill_parent"        android:layout_height="140dp"        android:layout_gravity="center"/>
2.在activity实例化viewpager

private ViewPager viewPager;

  viewPager=(ViewPager)findViewById(R.id.viewPager);

3.写layout布好view,实例化引用view

写好view的几个layout


这个是view1

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"><ImageButton    android:layout_width="match_parent"    android:layout_height="150dp"    android:src="@drawable/image1"    /></LinearLayout>

这个是view2

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageButton        android:layout_width="match_parent"        android:layout_height="150dp"        android:src="@drawable/image2"        android:id="@+id/image2"        /></LinearLayout>

这个是view3

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageButton        android:layout_width="match_parent"        android:layout_height="150dp"        android:src="@drawable/image3"        /></LinearLayout>

4.然后在activity中引用view和用list装载view

实例化view

LayoutInflater lf = getLayoutInflater().from(this);        view1 = lf.inflate(R.layout.image1, null);        view2 = lf.inflate(R.layout.image2, null);        view3 = lf.inflate(R.layout.image3, null);

用list装载view

       viewList = new ArrayList<View>();// 将要分页显示的View装入数组中        viewList.add(view1);        viewList.add(view2);        viewList.add(view3);


5.为我们自己创建的viewpager设置Adapter

第一种方式:新手无需改动,直接调用即可。

放在onCreate中

PagerAdapter pagerAdapter = new PagerAdapter() {            public boolean isViewFromObject(View arg0, Object arg1) {                return arg0 == arg1;            }            public int getCount() {                return viewList.size();            }            public void destroyItem(ViewGroup container, int position,                                    Object object) {                container.removeView(viewList.get(position));            }            public Object instantiateItem(ViewGroup container, int position) {                container.addView(viewList.get(position));                return viewList.get(position);            }        };        viewPager.setAdapter(pagerAdapter);    }


第二种方式:新建一个类的Adapter去继承PagerAdapter。然后在onCreate中要有设置好Adapter语句就可以了。新手无需改动,直接调用即可。

class MyAdapter extends PagerAdapter {            @Override          public int getCount() {              return list.size();          }            public void destroyItem(ViewGroup container, int position, Object object) {              ((ViewPager)container).removeView(list.get(position));          }                         public Object instantiateItem(ViewGroup container, int position) {              ((ViewPager)container).addView(list.get(position));                       return list.get(position);//显示返回的view          }          public boolean isViewFromObject(View arg0, Object arg1) {              // TODO Auto-generated method stub              return arg0==arg1;//判断是否关联          }        }  
设置Adapter的语句
viewPager.setAdapter(new MyAdapter());


OK,基本的步骤都尽量写得非常详细了。



2 0