前言:TitlePageIndicator这个就是效果比较好。

    一:定义布局文件simple_titles:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent"
  4. android:orientation="vertical" >
  5.  
  6. <com.viewpagerindicator.TitlePageIndicator
  7. android:id="@+id/indicator"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:padding="10dip" />
  11.  
  12. <android.support.v4.view.ViewPager
  13. android:id="@+id/pager"
  14. android:layout_width="fill_parent"
  15. android:layout_height="0dp"
  16. android:layout_weight="1" />
  17.  
  18. </LinearLayout>

    二:代码中使用:

  1. setContentView(R.layout.simple_titles);
  2.  
  3. mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
  4.  
  5. mPager = (ViewPager)findViewById(R.id.pager);
  6. mPager.setAdapter(mAdapter);
  7.  
  8. mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);
  9. mIndicator.setViewPager(mPager);

      其中的mAdapter在定义的时候需要实现IconPagerAdapter中的getPageTitle方法

  1.   protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test", };
  2. /**
  3. * 定义tittle标题
  4. */
  5. @Override
  6. public CharSequence getPageTitle(int position) {
  7. return TestFragmentAdapter.CONTENT[position % CONTENT.length];
  8. }

    三:可修改的属性:

  1. <declare-styleable name="TitlePageIndicator">
  2.  
  3. <!-- 距离左侧和右侧的距离 -->
  4. <attr name="clipPadding" format="dimension" />
  5. <!-- 底边线和底边指示的颜色 -->
  6. <attr name="footerColor" format="color" />
  7. <!-- 底边线的高度 -->
  8. <attr name="footerLineHeight" format="dimension" />
  9. <!-- 指示样式选择,尖角还条形 -->
  10. <attr name="footerIndicatorStyle">
  11. <enum name="none" value="0" />
  12. <enum name="triangle" value="1" />
  13. <enum name="underline" value="2" />
  14. </attr>
  15. <!-- 指示的高度 -->
  16. <attr name="footerIndicatorHeight" format="dimension" />
  17. <!-- 效果就是指示变宽了 -->
  18. <attr name="footerIndicatorUnderlinePadding" format="dimension" />
  19. <!-- 文字tittle和底边指示的距离 -->
  20. <attr name="footerPadding" format="dimension" />
  21. <!-- 指示的位置,tittle的上面,还是tittle的下面 -->
  22. <attr name="linePosition">
  23. <enum name="bottom" value="0" />
  24. <enum name="top" value="1" />
  25. </attr>
  26. <!-- 被选择tittle的颜色 -->
  27. <attr name="selectedColor" />
  28. <!-- 被选择的tittle显示是否加粗 -->
  29. <attr name="selectedBold" format="boolean" />
  30. <!-- 未被选择的tittle的颜色 -->
  31. <attr name="android:textColor" />
  32. <!-- 文字的大小 -->
  33. <attr name="android:textSize" />
  34. <!-- 下一个item距离上一个item多远时,上一个item开始移动消失 -->
  35. <attr name="titlePadding" format="dimension" />
  36. <!-- 指示和上边view的距离 -->
  37. <attr name="topPadding" format="dimension" />
  38. <!-- 整体的背景色 -->
  39. <attr name="android:background" />
  40. </declare-styleable>

    四:使用自定义属性

      1.布局中使用:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6.  
  7. <com.viewpagerindicator.TitlePageIndicator
  8. android:id="@+id/indicator"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:background="#18FF0000"
  12. android:padding="10dip"
  13. android:textColor="#AA000000"
  14. app:footerColor="#FFAA2222"
  15. app:footerIndicatorHeight="3dp"
  16. app:footerIndicatorStyle="underline"
  17. app:footerLineHeight="1dp"
  18. app:selectedBold="true"
  19. app:selectedColor="#FF000000" />
  20.  
  21. <android.support.v4.view.ViewPager
  22. android:id="@+id/pager"
  23. android:layout_width="fill_parent"
  24. android:layout_height="0dp"
  25. android:layout_weight="1" />
  26. </LinearLayout>

      3.代码中使用:

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.simple_titles);
  5.  
  6. mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
  7.  
  8. mPager = (ViewPager)findViewById(R.id.pager);
  9. mPager.setAdapter(mAdapter);
  10.  
  11. TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicator);
  12. mIndicator = indicator;
  13. indicator.setViewPager(mPager);
  14.  
  15. final float density = getResources().getDisplayMetrics().density;
  16. indicator.setBackgroundColor(0x18FF0000);
  17. indicator.setFooterColor(0xFFAA2222);
  18. indicator.setFooterLineHeight(1 * density); //1dp
  19. indicator.setFooterIndicatorHeight(3 * density); //3dp
  20. indicator.setFooterIndicatorStyle(IndicatorStyle.Underline);
  21. indicator.setTextColor(0xAA000000);
  22. indicator.setSelectedColor(0xFF000000);
  23. indicator.setSelectedBold(true);
  24. }

      3.theme使用:

        设置主题其中StyledIndicators可以自己随便定义,然后在配置文件中使用即可:

  1. <style name="StyledIndicators" parent="@android:style/Theme.Light">
  2. <item name="vpiTitlePageIndicatorStyle">@style/CustomTitlePageIndicator</item>
  3. </style>
  4.  
  5. <style name="CustomTitlePageIndicator">
  6. <item name="android:background">#18FF0000</item>
  7. <item name="footerColor">#FFFF7F24</item>
  8. <item name="footerLineHeight">1dp</item>
  9. <item name="footerIndicatorHeight">2dp</item>
  10. <item name="linePosition">top</item>
  11. <item name="titlePadding">30dp</item>
  12. <item name="footerIndicatorStyle">underline</item>
  13. <item name="android:textColor">#AAFF7F24</item>
  14. <item name="selectedColor">#FFFF7F24</item>
  15. <item name="selectedBold">true</item>
  16. </style>

        使用主题:

  1. <activity
  2. android:name=".SampleTitlesStyledTheme"
  3. android:label="Titles/Styled (via theme)"
  4. android:theme="@style/StyledIndicators" >
  5. <intent-filter>
  6. <action android:name="android.intent.action.MAIN" />
  7.  
  8. <category android:name="com.jakewharton.android.viewpagerindicator.sample.SAMPLE" />
  9. </intent-filter>
  10. </activity>

    五:在使用的时候,可以点击当前被选择的tittle,触发点击事件,只需要实现OnCenterItemClickListener即可:

  1. public class SampleTitlesCenterClickListener extends BaseSampleActivity implements OnCenterItemClickListener {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.simple_titles);
  6.  
  7. mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
  8.  
  9. mPager = (ViewPager)findViewById(R.id.pager);
  10. mPager.setAdapter(mAdapter);
  11.  
  12. TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicator);
  13. indicator.setViewPager(mPager);
  14. indicator.setFooterIndicatorStyle(IndicatorStyle.Underline);
  15. indicator.setOnCenterItemClickListener(this);
  16. mIndicator = indicator;
  17. }
  18.  
  19. @Override
  20. public void onCenterItemClick(int position) {
  21. Toast.makeText(this, "You clicked the center title!", Toast.LENGTH_SHORT).show();
  22. }
  23. }

      也可以设置滑动监听:

  1. mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
  2. @Override
  3. public void onPageSelected(int position) {
  4. Toast.makeText(SampleTitlesWithListener.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
  5. }
  6.  
  7. @Override
  8. public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  9. }
  10.  
  11. @Override
  12. public void onPageScrollStateChanged(int state) {
  13. }
  14. });

源码以及Demo下载地址:http://download.csdn.net/detail/as294985925/6796117

Android-ViewPagerIndicator框架使用——TitlePageIndicator的更多相关文章

  1. Android开源框架ViewPagerIndicator的基本使用

    转载本博客请注明出处:点击打开链接    http://blog.csdn.net/qq_32059827/article/details/52495647 很多新闻资讯类的app都有一些共性,那就是 ...

  2. Android百大框架排行榜

    Android百大框架排行榜 15类Android通用流行框架 - 流风,飘然的风 - 博客园https://www.cnblogs.com/zdz8207/p/android-opensource- ...

  3. 2017年Android百大框架排行榜

    框架:提供一定能力的小段程序 >随意转载,标注作者"金诚"即可 >本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. >本文已经开源到Gith ...

  4. android 优秀框架整理

    程序员界有个神奇的网站,那就是github,这个网站集合了一大批优秀的开源框架,极大地节省了开发者开发的时间,在这里我进行了一下整理,这样可以使我们在使用到时快速的查找到,希望对大家有所帮助! 1. ...

  5. 2017年Android百大框架排行榜(转)

    一.榜单介绍 排行榜包括四大类: 单一框架:仅提供路由.网络层.UI层.通信层或其他单一功能的框架 混合开发框架:提供开发hybrid app.h5与webview结合能力.web app能力的框架 ...

  6. Android开源框架ViewPageIndicator和ViewPager实现Tab导航

    前言: 关于使用ViewPageIndicator和ViewPager实现Tab导航,在开发社区里已经有一堆的博客对其进行了介绍,假设我还在这里写怎样去实现.那简直就是老生常谈,毫无新奇感,并且.我也 ...

  7. Android 开源框架Universal-Image-Loader学习

    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...

  8. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

  9. Android 开源框架Universal-Image-Loader完全解析(三)---源代码解读

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/39057201),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

随机推荐

  1. Objective-C:NSSet和NSMutbaleSet的用法

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  2. javascript快速入门16--表格

    表格的层次结构 <table border="1"> <caption>表格标题</caption> <thead> <tr& ...

  3. 【业务自动化】iTop,全面支持ITIL流程的一款ITSM工具

    iTop产品针对的主要应用场景为:内部IT支持.IT外包管理.数据中心运维管理和企业IT资产管理.常青管理从绿象认证产品中选取了iTop作为主要推荐产品,本类别的绿象认证产品还包括:OTRS和RT3等 ...

  4. Charles 抓HTTPS包报以下错误:

    1.You may need to configure your browser or application to trust the Charles Root Certificate. See S ...

  5. HDU 5094 --Maze【BFS &amp;&amp; 状态压缩】

    Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others) Total Sub ...

  6. BOS中定区关联客户

    1. 首先发布crm服务 第一步:创建动态的web项目crm,导入hessian的jar 第二步:创建一个crm数据库和t_customer表 第三步:在crm项目的web.xml中配置spring的 ...

  7. Spring 新手教程(二) 生命周期和作用域

    以下的知识点是针对使用配置文件讲的(annotation相应标签后面文章会具体阐述) Bean的生命周期: 为什么关心这个问题? 我们使用IOC的目的就是为了让Spring IOC帮我们管理对象.从而 ...

  8. 【算法拾遗(java描写叙述)】--- 插入排序(直接插入排序、希尔排序)

    插入排序基本思想 每次将一个待排序的记录按其keyword大小插入到前面已经拍好序的子文件的适当位置,直到全部记录插入完毕为止. 直接插入排序 基本思想 直接插入排序的基本操作是将一个记录插入到已排好 ...

  9. formail 发送HTML 邮件通过 SENDMAIL

    cat a.html | formail -I "Content-type:text/html;charset=utf-8" -I "Subject:layer4 con ...

  10. unity3d 导入google play services插件工程

    最近在给unity工程尝试接入google play services插件,遇到了些问题,记录一下. 之前在做android插件的时候,都是自己创建一个android工程,把生成的.class文件打包 ...