zoukankan      html  css  js  c++  java
  • ViewPager基础入门

     效果图:

        实现了三个view间的相互滑动

                    第一个VIEW向第二个VIEW滑动                       第二个VIEW向第三个VIEW滑动                                                

                                  

    一、新建项目,引入ViewPager控件

         ViewPager。它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换.

    1.在主布局文件里加入:

    其中 <android.support.v4.view.ViewPager /> 是ViewPager对应的组件,要将其放到想要滑动的位置

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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=".MainActivity">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
    </RelativeLayout>
    

    2.新建三个layout,用于滑动切换视图

    布局代码分别如下:

          layout_one.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#edf2e70e">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="这是第一个布局"
            android:textColor="#da0a34"
            android:textSize="18dip"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />
    
    </RelativeLayout>
    

      layout_two.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#2ce297">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="这是第二个布局"
            android:textSize="18dip"
            android:textColor="#be21d2"
            android:layout_gravity="center_horizontal"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="195dp" />
    
    </RelativeLayout>
    

      layout_three.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#2f8bc9">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="这是第三个布局"
            android:textSize="18dip"
            android:textColor="#ffffff"
            android:layout_gravity="center_horizontal"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="206dp" />
    
    </RelativeLayout>
    

     二.代码实战

    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 List<View> viewList;
    
        //对应的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<View>();
           //将实例化的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);
    
        }
    }
    

      

       

     

  • 相关阅读:
    常见数据结构和算法 的可视化
    JSON与XML
    JavaScript 中的陷阱
    C++ primer(十三)--类继承、构造函数成员初始化、虚函数、抽象基类
    mongodb学习(二)
    再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式
    LaTeX Subfigure 中间加入垂直线
    JAVA基础针对自己薄弱环节总结02(循环)
    软考之路--用文字记录这个漂亮的进程
    mysql异常Lock wait timeout exceeded; try restarting transaction
  • 原文地址:https://www.cnblogs.com/nylcy/p/5311909.html
Copyright © 2011-2022 走看看