文档章节

带标题和导航点的ViewPager

当空皓月
 当空皓月
发布于 2013/12/19 19:06
字数 689
阅读 198
收藏 0

关键代码:

xml布局:

<FrameLayout 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/mViewPager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >

        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/pagertitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top" >
        </android.support.v4.view.PagerTitleStrip>
    </android.support.v4.view.ViewPager>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/img1"
            android:layout_width="40dp"
            android:layout_height="40dp" />

        <ImageView
            android:id="@+id/img2"
            android:layout_width="40dp"
            android:layout_height="40dp" />

        <ImageView
            android:id="@+id/img3"
            android:layout_width="40dp"
            android:layout_height="40dp" />
    </LinearLayout>

</FrameLayout>

MainActivity:

private ViewPager mViewPager;
 private PagerTitleStrip mPagerTitleStrip;
 private List<ImageView> imgs;

@Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mViewPager = (ViewPager) findViewById(R.id.mViewPager);
   mPagerTitleStrip = (PagerTitleStrip)findViewById(R.id.pagertitle);
   //每页显示的内容      也可以用LayoutInflater mLi = LayoutInflater.from(this);View view1 = mLi.inflate((R.layout.view1, null);添加布局
  final List<ImageView> views = new ArrayList<ImageView>();
  ImageView img = new ImageView(this);     img.setImageResource(R.drawable.ic_launcher);
  ImageView img2 = new ImageView(this);   img2.setImageResource(R.drawable.ic_launcher);
  ImageView img3 = new ImageView(this);    img3.setImageResource(R.drawable.ic_launcher);
  views.add(img);
  views.add(img2);
  views.add(img3);
  //初始化导航点ImageView数组
  imgs=new ArrayList<ImageView>();
  ImageView i1=(ImageView)findViewById(R.id.img1);
  ImageView i2=(ImageView)findViewById(R.id.img2);
  ImageView i3=(ImageView)findViewById(R.id.img3);
  //数组中添加数据
  imgs.add(i1);
  imgs.add(i2);
  imgs.add(i3);
  for (int j = 0; j < views.size(); j++)

{
    if (j==0)

   {
       imgs.get(j).setBackgroundResource(R.drawable.a);
   }
   else {
    imgs.get(j).setBackgroundResource(R.drawable.b);
   }
  }
  /*// 每个页面的Title数据     添加标题方法一:
  final ArrayList<String> titles = new ArrayList<String>();
  titles.add("tab1");
  titles.add("tab2");
  titles.add("tab3");*/
  //适配器
  PagerAdapter mPagerAdapter = new PagerAdapter()
  {
   //用于判断是否由对象生成界面
   @Override
   public boolean isViewFromObject(View arg0, Object arg1)
   {
    return arg0 == arg1;
   }
    //Return the number of views 总共有几页?
   @Override
   public int getCount()
   {
    return views.size();
   }
      //Remove a page for the given position从container中移除当前view
   @Override
   public void destroyItem(View container, int position, Object object)
   {
    //删除页面
    ((ViewPager) container).removeView((View) object);//等价于:((ViewPager) container).removeView(views.get(position));
   }
   //Returns an Object representing the new page返回一个对象表示新的一页
   @Override
   public Object instantiateItem(View container, int position)
   {
    //添加页面
    ((ViewPager) container).addView(views.get(position));
    return views.get(position);
   }
   @Override
   public CharSequence getPageTitle(int position)
   {

     //添加标题方法二:
    switch (position)
    {
     case 0:   
      return "tab1";
     case 1:
      return "tab2";
     case 2:
      return "tab3";
    default:
     break;
    }
    //return titles.get(position);  //添加标题方法一:
    return null;
   }
  };
  mViewPager.setAdapter(mPagerAdapter);

//事件处理
  mViewPager.setOnPageChangeListener(new OnPageChangeListener()
  {
   @Override
   public void onPageSelected(int position)
   {
    for (int i = 0; i < views.size(); i++)
    {
     if (i==position)//选中时
     {
      imgs.get(i).setBackgroundResource(R.drawable.a);
     }
     else {
      imgs.get(i).setBackgroundResource(R.drawable.b);
     }
    }
   }
  });
 }

 

关于自动轮播:

// 当前轮播页
 private int currentItem = 0;

 

  final Handler handler = new Handler(){
     @Override
     public void handleMessage(Message msg) {
     super.handleMessage(msg);
     mViewPager.setCurrentItem(currentItem);
        }
     };

 

Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {

   @Override
   public void run() {
    synchronized (mViewPager) {
     currentItem = (currentItem + 1) % mList.size();
     handler.obtainMessage().sendToTarget();
    }
   }
  }, 0, 5, TimeUnit.SECONDS);

参考:http://www.it165.net/pro/html/201406/16227.html

http://www.apkbus.com/android-83696-1-1.html

一个学习网:http://www.godcoder.com/

//轮播公告
  for (int i = 1; i <= 5; i++) {
   final int j=i;
   TextView t=new TextView(this);
   t.setText("优惠公告"+i);
   t.setTextColor(Color.WHITE);
   mFlipper.addView(t);
   t.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
     Toast.makeText(MainActivity.this, "优惠公告 "+j, Toast.LENGTH_SHORT).show();
    }
   });
  }
   mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
                 R.anim.push_up_in));
         mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
                 R.anim.push_up_out));
   mFlipper.startFlipping();

 

http://www.cnblogs.com/ok-lanyan/archive/2012/08/02/2619701.html  写的超好!

http://www.linuxidc.com/Linux/2012-05/60763.htm  Android中利用ViewFliper实现屏幕切换效果

Android垂直滑动新特性:应用欢迎界面

http://www.godcoder.com/project/view/270

© 著作权归作者所有

上一篇: 杂七杂八3
下一篇: 手机归属地查询
当空皓月
粉丝 14
博文 179
码字总数 67070
作品 0
郑州
私信 提问
TabLayout实现顶部导航(一)

前言 顶部导航栏,是我们在开发中比较常见的一种显示布局,它的实现可以有多种方式,那么今天我们就来讲讲 TabLayout 对它的实现。 此篇文章参考以下链接 TabLayout轻松实现仿今日头条顶部t...

奔跑的佩恩
01/07
0
0
Android开源控件ViewPager Indicator的使用方法

Android Viewpager Indicator是Android开发中最常用的控件之一,几乎所有的新闻类APP中都有使用,下面介绍其基本使用方法。 1. ViewPager Indicator的Library 查看Viewpager Indicator的Lib...

linsea
2014/03/14
0
0
android中ViewPager详解--视图滑动、界面卡等效果 (一)

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一。利用它,我们可以做很多事情,从最简单的导航,到页面菜单...

一别经年
2014/01/21
0
0
Android ViewPager使用详解

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等...

Remix_jx
2014/10/27
0
0
Android viewpager+fragment+viewpager+fragment 的问题

用了viewpager+fragment 嵌套viewpager+fragment, 第一个viewpager自定义了禁止滑动的功能,通过点击底部的导航栏进行切换,然后第二个viewpager可以滑动,但是当第二个viewpager滑动到最后...

飘渺的火
2017/12/11
43
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash 和 Python 编程语言优缺点分析

Bash 和 Python 是大多数自动化工程师最喜欢的编程语言。它们都各有优缺点,有时很难选择应该使用哪一个。所以,最诚实的答案是:这取决于任务、范围、背景和任务的复杂性。 让我们来比较一下...

xiangyunyan
21分钟前
3
0
Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线

排查完全陌生的问题,完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需要理解一些自己完全陌生的组件,比如sys...

阿里云云栖社区
26分钟前
4
0
解决exe4打包出现的问题

https://blog.csdn.net/gem_yaorao/article/details/48626155

南桥北木
43分钟前
1
0
SpringBoot高级篇JdbcTemplate之数据更新与删除

前面介绍了JdbcTemplate的插入数据和查询数据,占用CURD中的两项,本文则将主要介绍数据更新和删除。从基本使用上来看,姿势和前面的没啥两样 <!-- more --> I. 环境准备 环境依然借助前面一...

小灰灰Blog
59分钟前
3
0
Filecoin 编译问题

https://github.com/filecoin-project/go-filecoin/issues/2503 Error go run ./build build command from root I've faced on this error Building go-filecoin...git log -n 1 --forma......

怎当她临去时秋波那一转
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部