viewpager的使用

Viewpager是用于实现多页面的切换效果的。在现在的app中非常常见,通常会配合Fragment使用。现在简单的对view的使用进行介绍。

首先认识一个这个控件,ViewPager。它是google SDk中自带的一个附加包的一个类(这个附加包是android-support-v4.jar),可以用来实现屏幕间的切换。

首先进行页面设计:

main.xml文件

 1  <android.support.v4.view.ViewPager
 2        android:layout_width="match_parent"
 3        android:layout_height="match_parent"
 4        android:id="@+id/viewPager"
 5        ></android.support.v4.view.ViewPager>
 6 
 7     <LinearLayout
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:gravity="center_vertical"
11         android:layout_alignParentBottom="true"
12         android:orientation="horizontal"
13         android:id="@+id/group"
14         ></LinearLayout>

每个页面的的代码一共有三个item1,item2,item3现在只放一个其他的类似

 <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/view1"
        android:id="@+id/item1"
        />

只有一张图片。

现在代码部分,先定义字段

1     ArrayList<View> viewlist;//页面的内容
2     ViewPager vpager;//页卡内容
3     ImageView image;//动画图片
4     ImageView[] imaglist;//动画图片
5     ViewGroup group;//动画图片效果

 

oncreate()方法

 1 protected void onCreate(Bundle savedInstanceState) {
 2         super.onCreate(savedInstanceState);
 3         setContentView(R.layout.activity_main);
 4 
 5         vpager = (ViewPager) findViewById(R.id.viewPager);
 6 
 7         viewlist = new ArrayList<View>();
 8         LayoutInflater inflater = getLayoutInflater();
 9         View v1 = inflater.inflate(R.layout.item1, null);
10         View v2 = inflater.inflate(R.layout.item2, null);
11         View v3 = inflater.inflate(R.layout.item3, null);
12 
13         viewlist.add(v1);
14         viewlist.add(v2);
15         viewlist.add(v3);
16 
17 
18         imaglist = new ImageView[viewlist.size()];
19         for (int i = 0; i < viewlist.size(); i++) {
20 
21             image = new ImageView(MainActivity.this);
22 
23             if (i == 0) {
24                 image.setImageResource(R.drawable.page_indicator_focused);
25             } else {
26                 image.setImageResource(R.drawable.page_indicator_unfocused);
27             }
28             imaglist[i] = image;
29             group.addView(image);
30         }
31 
32         vpager.setAdapter(adapter);
33         vpager.setOnPageChangeListener(new myPagerChangeListener());
34 
35 
36     }

viewpager必须通过适配器使用。下面的代码定义了适配器

 1 PagerAdapter adapter = new PagerAdapter() {
 2         @Override
 3         public int getCount() {
 4             return viewlist.size();
 5         }
 6 
 7         @Override
 8         public boolean isViewFromObject(View view, Object o) {
 9             return view==o;
10         }
11 
12         @Override
13         public Object instantiateItem(ViewGroup container, int position) {
14             ((ViewPager)container).addView(viewlist.get(position));
15 
16             return viewlist.get(position);
17         }
18 
19         @Override
20         public void destroyItem(ViewGroup container, int position, Object object) {
21             ((ViewPager)container).removeView(viewlist.get(position));
22         }
23     };

最后是定义监听时间。在进行翻页的时候得动画

    class myPagerChangeListener implements ViewPager.OnPageChangeListener{
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
           for(int j=0;i<imaglist.length;j++){
               if(i==j){
                   imaglist[j].setImageResource(R.drawable.page_indicator_focused);
               }else {
                   imaglist[j].setImageResource(R.drawable.page_indicator_unfocused);
               }
           }

        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    }

 

posted on 2015-12-13 15:09  麦冬  阅读(331)  评论(0编辑  收藏  举报