zoukankan      html  css  js  c++  java
  • Android笔记: ViewPager基本用法

    ViewPager控件可以实现多个View(或fragment)滑动切换的效果,属于比较常用的控件.下面用一个简单的例子介绍一下该控件的基本用法.

    • 首先是布局文件activity_view_pager.xml,简单起见,该布局文件没有ViewGroup,只有一个ViewPager控件
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    
    • 两个用于加载的视图

    layout1.xml

    <?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"
        android:background="#00ff00"
        android:orientation="vertical" >
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="button" />
    </LinearLayout>  
    

    layout2.xml

    <?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"
        android:background="#ff0000"
        android:orientation="vertical" >
    </LinearLayout>  
    
    • 然后是主体的代码,使用过程
      1. 声明ViewPager控件和需要加载的视图.
      2. 绑定视图.
      3. 为ViewPager创建一个PagerAdapter对象.
      4. 实现PagerAdapter中的方法
      5. 将adapter绑定到ViewPager对象上.
    public class ViewPagerActivity extends Activity {
        // 1. 声明ViewPager控件和需要加载的视图.
        private ViewPager mViewPager;
        private View mView1, mView2;
        private ArrayList<View> mViews = new ArrayList<View>();
        private Button mButton;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_view_pager);
            bindViews();
            initViewPager();
        }
        // 2. 绑定视图.
        private void bindViews() {
            mViewPager = (ViewPager) findViewById(R.id.view_pager);
            LayoutInflater inflater = getLayoutInflater();
            mView1 = inflater.inflate(R.layout.layout1, null);
            mView2 = inflater.inflate(R.layout.layout2, null);
            // 访问ViewPager引入布局中的控件
            mButton = (Button) mView1.findViewById(R.id.button);
            mButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    mButton.setText("clicked");
                }
            });
        }
        private void initViewPager() {
            mViews.add(mView1);
            mViews.add(mView2);
            // 3. 为ViewPager创建一个PagerAdapter对象.
            PagerAdapter adapter = new PagerAdapter() {
                @Override
                public boolean isViewFromObject(View arg0, Object arg1) {
                    // 4.1 实现PagerAdapter中的方法
                    return arg0 == arg1;
                }
                @Override
                public int getCount() {
                    // 4.2 实现PagerAdapter中的方法
                    return mViews.size();
                }
                @Override
                public void destroyItem(View container, int position,
                        Object object) {
                    // 4.3 实现PagerAdapter中的方法
                    ((ViewPager) container).removeView(mViews.get(position));
                }
                @Override
                public Object instantiateItem(View container, int position) {
                    // 4.4 实现PagerAdapter中的方法
                    ((ViewPager) container).addView(mViews.get(position));
                    return mViews.get(position);
                }
            };
            // 5. 将adapter绑定到ViewPager对象上.
            mViewPager.setAdapter(adapter);
        }
    }  
    
  • 相关阅读:
    iBatis,第二次亲密接触
    微斯人,吾谁与归
    一个月了
    生命在于运动
    眼皮跳了好几天
    往返
    中病毒,学习批处理

    爱如潮水
    今天夏至
  • 原文地址:https://www.cnblogs.com/fortitude/p/5479055.html
Copyright © 2011-2022 走看看