• 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

    你必须非常努力,才能看起来毫不费力。。。
  • 相关阅读:
    15、线程
    17、lambda表达式
    16、sockect
    14、反射(reflect)
    13、集合2
    java 基本类型、包装类、字符串之间的转换
    13、集合1
    12、NIO、AIO、BIO二
    12、NIO、AIO、BIO一
    11、流与文件
  • 原文地址:https://www.cnblogs.com/yiweiaimeng/p/4925338.html
Copyright © 2020-2023  润新知