zoukankan      html  css  js  c++  java
  • viewPager的基本使用

    viewPager是android扩展包v4中的类,这个类可以使用户左右切换当前的view。

    特性:

    1.viewPager直接继承了viewGroup类,所以它是一个容器类,可以在其中添加其它的view

    2.viewPager类需要一个PagerAdapter适配器类给他提供数据

    3.viewPager经常个Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类

    主意:在编写viewpager的使用中,还需要使用两个组件分别是PagerTitleStrip和PagerTabStrip类,PagerTitleStrip类直接集成了ViewGroup类,而PagerTabStrip继承了PagerTitleStrip类,所以这两个类也是容器类

    代码XML:

    <android.support.v4.view.ViewPager

        android:id="@+id/viewpager"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content">

      <android.support.v4.view.PagerTabStrip

        android:id="@+id/tabstrip"

        android:layout_width="wrap_content"

        android:layut_heigth="50dip"

        android:gravity="center"/>

    </android.support.v4.view.ViewPager>

    MainActivity.java:

       ArrayList<View> viewContainter = new ArrayList<View>();
        ArrayList<String> titleContainer = new ArrayList<String>();

    //取消tab下面的长横线

    tabStrip.setDrawFullUnderline(flase);

    //设置tab的背景颜色

    tabStrip.setBackGroundColor(this.getResources().getColor(R.color.red) );

    /设置当前tab页的下划线颜色

    tabStrip.setTabIndicatorColor(this.getResources().getColor(R.color.red) );

    tabStrip.setTextSpacing(200);

         View view1 = LayoutInflater.from(this).inflate(R.layout.tab1, null);
            View view2 = LayoutInflater.from(this).inflate(R.layout.tab2, null);
            View view3 = LayoutInflater.from(this).inflate(R.layout.tab3, null);
            View view4 = LayoutInflater.from(this).inflate(R.layout.tab4, null);
          //viewpager开始添加view
            viewContainter.add(view1);
            viewContainter.add(view2);
            viewContainter.add(view3);
            viewContainter.add(view4);
          //页签项
            titleContainer.add("网易新闻");
            titleContainer.add("网易体育");
            titleContainer.add("网易财经");
            titleContainer.add("网易女人");
    pager.setAdapter(new PagerAdater(){
      //viewpager中的组件数量
        public int getCount(){
          return viewContainter.size();
        }
      //滑动切换时候应该销毁当前组件
        public void destroyItem(ViewGroup container,int position,Object object){
          ( (viewpager)container ).removeView(viewContainter.get(position) );
        }
      //每次滑动应该生成的组件
        public Object instantiateItem(ViewGroup container,int position){
          ( (viewpager)container ).addView(viewContainter.get(position) );
          return viewContainter.get(position);
        }
      //必重写的方法
        public boolean isViewFromObject(View arg0,Object arg1){
          return arg-==arg1;
        }
        public int getItemPosition(Object object){
          return super.getItemPosition(object);
        }
        public CharSequence getPageTitle(int position){
          return titleContainer.get(position);
        }
     
    } );
    //  滑动监听
         pager.setOnPageChangeListener(new OnPageChangeListener() {
                @Override
                public void onPageScrollStateChanged(int arg0) {
                    Log.d(TAG, "--------changed:" + arg0);
                }
     
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    Log.d(TAG, "-------scrolled arg0:" + arg0);
                    Log.d(TAG, "-------scrolled arg1:" + arg1);
                    Log.d(TAG, "-------scrolled arg2:" + arg2);
                }
     
                @Override
                public void onPageSelected(int arg0) {
                    Log.d(TAG, "------selected:" + arg0);
                }
            });
     
    主意:
    对于PargerAdapter类,必须要重写4个方法:
    public Object instantiateItem(ViewGoup container,int position){};
    public void destroyItem(ViewGroup container,int postion ,Object object){};
    public int getCount(){};
    public boolean isViewFromObject(View arg0,Object arg1){};
     
    效果图:

    150920_Y0Ck_932977.png

    你必须非常努力,才能看起来毫不费力。。。
  • 相关阅读:
    读Windows核心编程2字符和字符串
    HTTP Error 404.3 while browse to WCF service
    读Windows核心编程3内核对象
    代码安全性的基本原则[转载]
    在HyperV中安装和配置Ubuntu网络
    使用Windows Azure Mobile Service开发Windows Phone 8 App
    Js 学习 使用js arguments 写一个 多态overload 的小程序。 js 闭包写一个10的阶乘的算法
    js 学习 函数
    jquery slider show carouFredSel
    vs 2010 创建windows phone 程序 出现System.ArgumentNullException Value cannot be null. Parameter name: parentContext
  • 原文地址:https://www.cnblogs.com/yiweiaimeng/p/4925338.html
Copyright © 2011-2022 走看看