Android快速SDK(18)Tab页面TabPager【傻瓜模式】

来源:互联网 发布:sql将string转int 编辑:程序博客网 时间:2024/05/16 13:59

代码:http://download.csdn.net/detail/huangbin95487710/9260383

依赖包模式

完整运行还需要用到以下依赖包
  • Android快速SDK(1)基础工具库QuickBase
  • Android快速SDK(22)友盟升级统计库UmengUpdate【肌肉记忆,分钟接入】

基于ViewPager装载在SlidingMenu内适用

  1. 新特性配置支持
    • 配置Tab样式
      • 空白
      • 下划线
      • 三角型
      • 下划线+三角型
      • 三角型+下划线
      • <!-- 下标的样式 --><attr name="footerstyle"><enum name="none" value="0" /><enum name="triangle" value="1" /><enum name="underline" value="2" /><enum name="underlinetriangle" value="3" /><enum name="triangleunderline" value="4" /></attr>

    • 右竖线
    • 配置一行最大摆放Tab数量 
    • 配置居中摆放或全屏
    • 配置Tab文字颜色
    • 配置Tab背景颜色
    • 配置下划线样式
    • 默认样式
    •     <style name="DivTabPager">        <item name="android:layout_height">wrap_content</item>        <item name="android:layout_width">wrap_content</item>        <item name="android:gravity">center</item>        <item name="android:background">#ffeeeded</item>        <!-- 背景颜色与选中颜色,#00ffffff程序代码不会执行,只会根据android:background进行系统设置 -->        <item name="tadBgColor">#00ffffff</item>        <item name="tadBgSelectedColor">#00ffffff</item>        <item name="android:dividerPadding">10dp</item>        <item name="android:showDividers">middle</item>        <item name="android:fadingEdge">horizontal</item>        <item name="android:fadingEdgeLength">1dp</item>        <!-- 右边竖线 -->        <item name="rightline">true</item>        <!-- 右边竖线对应的资源ID -->        <item name="rightlineid">@drawable/tabpager_tab_line_right</item>        <item name="footerstyle">underline</item>        <!-- 一行最大的个数 -->        <item name="maxrownum">0</item>        <!-- 标题栏目的样式 -->        <item name="textviewstyle">@style/Widget.TextView.TabPager</item>        <!-- 简介的样式 -->        <item name="textviewinfostyle">@style/Widget.TextView.TabPagerInfo</item>    </style>    <style name="DivUnderline">        <item name="android:layout_height">3dip</item>        <item name="android:layout_width">fill_parent</item>        <item name="selectedColor">#FF3b68b0</item>        <item name="android:background">#ffeeeded</item>        <item name="space">4</item>        <item name="fadeLength">1000</item>        <item name="fadeDelay">1000</item>    </style>

  2. 若需要更改Tab文字颜色,请复制color/tabpager_indicator_text.xml到目标项目
  3. 示例代码
    • 布局
    • <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <General.View.TabPager.TabPageIndicator        android:id="@id/tab_indicator"        style="@style/MyDivTabPagerTriangle" />    <FrameLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent" >        <LinearLayout            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:background="#FFffffff"            android:orientation="vertical" >            <android.support.v4.view.ViewPager                android:id="@id/pager"                android:layout_width="fill_parent"                android:layout_height="fill_parent" />        </LinearLayout>        <General.View.TabPager.UnderlinePageIndicatorEx            android:id="@id/underline_indicator"            style="@style/MyDivUnderlineTriangle" />    </FrameLayout></LinearLayout>

    • <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center"    android:orientation="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="18sp"        android:textColor="#FFffffff"        android:layout_gravity="center"        android:text="hello world" /></LinearLayout>


    • 自定义样式
    • <?xml version="1.0" encoding="utf-8"?><resources xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 重写样式 ,三角形.无竖线.一行3个 -->    <style name="MyDivTabPagerTriangle" parent="@style/DivTabPager">        <item name="footerstyle">triangle</item>        <item name="rightline">false</item>        <item name="maxrownum">3</item>    </style>    <style name="MyDivUnderlineTriangle" parent="@style/DivUnderline">        <item name="android:layout_height">6dip</item>        <item name="selectedColor">#FFeeeded</item>        <item name="android:background">#FFffffff</item>    </style>    <!-- 重写样式 ,下划线.竖线.一行3个 -->    <style name="MyDivTabPagerNormal" parent="@style/DivTabPager">        <item name="footerstyle">underline</item>        <item name="rightline">true</item>        <item name="maxrownum">3</item>    </style>    <style name="MyDivUnderlineNormal" parent="@style/DivUnderline">        <item name="android:layout_height">2dip</item>    </style>    <!-- 重写样式 ,居中三个 -->    <style name="MyDivTabPagerCenter" parent="@style/DivTabPager">        <item name="footerstyle">underline</item>        <item name="rightline">true</item>        <item name="maxrownum">0</item>    </style>    <style name="MyDivUnderlineCenter" parent="@style/DivUnderline">        <item name="android:layout_height">2dip</item>    </style>    <!-- 重写样式 -->    <style name="Widget.TextView.TabPager.Div" parent="@style/Widget.TextView.TabPager">        <item name="android:textColor">@color/test_tabpager_indicator_text</item>        <item name="android:textSize">15sp</item>    </style>    <style name="MyDivTabPager" parent="@style/DivTabPager">        <item name="android:layout_width">fill_parent</item>        <item name="android:background">#FFfdfdfd</item>        <item name="textviewstyle">@style/Widget.TextView.TabPager.Div</item>    </style>    <style name="MyDivUnderline" parent="@style/DivUnderline">        <item name="android:layout_height">2dip</item>        <item name="selectedColor">#FF005cff</item>        <item name="android:background">#FFfdfdfd</item>    </style></resources>

    • 代码
    • TabPager.java
    • package cn.whonow.whonow.tabpager;import java.util.ArrayList;import java.util.List;import General.Listener.PagerListener;import General.Listener.PagerMarginListener;import General.System.MyLayout;import General.View.TabPager.ContentFrameAdapter;import General.View.TabPager.TabPageIndicator;import General.View.TabPager.UnderlinePageIndicatorEx;import General.View.TabPager.Base.FragmentItemBase;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.view.ViewPager;import android.view.View;import cn.whonow.whonow.R;public class TabPager extends FragmentActivity implements PagerListener,PagerMarginListener {public static void startTabPager(Context context, int mLayoutID) {Intent intent = new Intent();intent.putExtra(KEY_LAYOUT, mLayoutID);intent.setClass(context, TabPager.class);context.startActivity(intent);}private static final String KEY_LAYOUT = "key_layout";public List<FragmentItemBase> mFragmentItemList = new ArrayList<FragmentItemBase>();public ContentFrameAdapter mContentAdapter;public ViewPager mPager;private TabPageIndicator mTabPageIndicator;private UnderlinePageIndicatorEx mUnderlinePageIndicator;private int pagerIndex = 0;private int mLayoutId;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Bundle mBundle = getIntent().getExtras();if (mBundle != null) {mLayoutId = mBundle.getInt(KEY_LAYOUT, -1);}if (mLayoutId > 0)setContentView(mLayoutId);elsesetContentView(R.layout.test_tabpager_triangle);initPager();}public void initPager() {TabPagerItem mPagerItem1 = new TabPagerItem("测试1");TabPagerItem mPagerItem2 = new TabPagerItem("测试2");TabPagerItem mPagerItem3 = new TabPagerItem("测试3");mFragmentItemList.add(mPagerItem1);mFragmentItemList.add(mPagerItem2);mFragmentItemList.add(mPagerItem3);if (mLayoutId != R.layout.test_tabpager_center) {TabPagerItem mPagerItem4 = new TabPagerItem("测试4");TabPagerItem mPagerItem5 = new TabPagerItem("测试5");mFragmentItemList.add(mPagerItem4);mFragmentItemList.add(mPagerItem5);}mContentAdapter = new ContentFrameAdapter(getSupportFragmentManager(),this);mContentAdapter.setContentList(mFragmentItemList);mPager = (ViewPager) findViewById(R.id.pager);mPager.setAdapter(mContentAdapter);mTabPageIndicator = (TabPageIndicator) findViewById(R.id.tab_indicator);mTabPageIndicator.setScreenWidth(MyLayout.getScreenWidth(this));mTabPageIndicator.setViewPager(mPager, this);mTabPageIndicator.setCurrentItem(pagerIndex);mUnderlinePageIndicator = (UnderlinePageIndicatorEx) findViewById(R.id.underline_indicator);mUnderlinePageIndicator.setOnPagerMarginListener(this);mUnderlinePageIndicator.setViewPager(mPager);mUnderlinePageIndicator.setFades(false);mUnderlinePageIndicator.setCurrentItem(pagerIndex);mUnderlinePageIndicator.setTabPageIndicator(mTabPageIndicator);mTabPageIndicator.setOnPageChangeListener(mUnderlinePageIndicator);mFragmentItemList.get(pagerIndex).mIsDefault = true;if (mFragmentItemList.size() <= 1) {// 小于等于一个的时候隐藏mTabPageIndicator.setVisibility(View.GONE);mUnderlinePageIndicator.setVisibility(View.GONE);}}@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onLeftMargin() {// TODO Auto-generated method stub}@Overridepublic void onRightMargin() {// TODO Auto-generated method stub}}

    • TabPagerItem.java
    • package cn.whonow.whonow.tabpager;import General.View.TabPager.Base.FragmentItemBase;import cn.whonow.whonow.R;public class TabPagerItem extends FragmentItemBase {public TabPagerItem(String mTitle) {super(mTitle);}@Overridepublic void initFuntion() {// TODO Auto-generated method stubsuper.setLayoutId(R.layout.test_tabpager_item);super.openTabReload();}@Overridepublic void reload() {init();}@Overridepublic void initView() {// mList = (MyListView) mItemView.findViewById(android.R.id.list);// mList.setOnItemClickListener(this);}private void init() {}@Overridepublic boolean isCheckLog() {// TODO Auto-generated method stubreturn true;}}

  4. 效果图




0 0
原创粉丝点击