Android 顶部tab 比较流行实用,在很多的应用中都能见到。下面使用andbase 快速集成到自己的项目中

使用别人的框架 可以不用重复造轮子,但是 也需要知道实现的原理,那么 以后 自己也可以自定义一个,我们也可以从别人的框架中

学习到很多东西,比如别人的 代码风格 命名规范,以及 封装的程度 里面实现的一些 细节 都可以从中吸取经验,为以后进阶 升级做准备。

andbase 顶部 Tab 切换 快速集成 以及实现原理

使用的自定义view 为 com.ab.view.sliding.AbSlidingTabView

先看下 它的实现原理,

如果有andbase源码的朋友 也可以对照着看,

首先AbSlidingTabView 这个类 集成是 LinearLayout, 大家都知道 上面 tab切换 点击 下面的界面 会变成相应的,
下面的界面 确定了 是 fragment ,从源码中 能看到 ViewPager,HorizontalScrollView等控件

那 基本 可以知道 实现的原理,我们的 tab 切换 是一个LinearLayout,里面 嵌套 HorizontalScrollView 使得可以滑动,然后

HorizontalScrollView里面 就是具体每一个tab,tab里面 提供设置 文字,文字颜色 大小 间隔 等等一些属性,

那么 下面 就是 使用ViewPager,ViewPager 里面 放入 一个个的fragment ,然后上面的 tab 和 下面的 ViewPager实现联动

就成就了我们一个tab控件,我们只需设置几个 fragment 和 每一个 tab的 文字 以及颜色 等等的调整。

虽然 实现原理已经解析,但是 真正要写的 比较好用 而且 最重要的是稳定,那么 需要做的工作 考虑的细节 还是非常的多。

希望大家 有所感悟。 那么 看看 它 究竟 怎么快速集成到我们的项目吧


public class TabTopActivity extends AbActivity {

private MyApplication application;
private AbSlidingTabView mAbSlidingTabView;



@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setAbContentView(R.layout.tab_top);
application = (MyApplication) abApplication;

AbTitleBar mAbTitleBar = this.getTitleBar();
mAbTitleBar.setTitleText(R.string.tab_top_name);
mAbTitleBar.setLogo(R.drawable.button_selector_back);
mAbTitleBar.setTitleBarBackground(R.drawable.top_bg);
mAbTitleBar.setTitleTextMargin(10, 0, 0, 0);
mAbTitleBar.setLogoLine(R.drawable.line);
initTitleRightLayout();


mAbSlidingTabView = (AbSlidingTabView) findViewById(R.id.mAbSlidingTabView);

//如果里面的页面列表不能下载原因:
//Fragment里面用的AbTaskQueue,由于有多个tab,顺序下载有延迟,还没下载好就被缓存了。改成用AbTaskPool,就ok了。
//或者setOffscreenPageLimit(0)

//缓存数量
mAbSlidingTabView.getViewPager().setOffscreenPageLimit(5);


FragmentLoad page1 = new FragmentLoad();
FragmentLoad page2 = new FragmentLoad();
FragmentLoad page3 = new FragmentLoad();
FragmentLoad page4 = new FragmentLoad();
FragmentLoad page5 = new FragmentLoad();
FragmentLoad page6 = new FragmentLoad();



List<Fragment> mFragments = new ArrayList<Fragment>();
mFragments.add(page1);
mFragments.add(page2);
mFragments.add(page3);
mFragments.add(page4);
mFragments.add(page5);
mFragments.add(page6);

List<String> tabTexts = new ArrayList<String>();
tabTexts.add("推荐");
tabTexts.add("排行");
tabTexts.add("游戏中心");
tabTexts.add("专题栏目");
tabTexts.add("英雄三国");
tabTexts.add("专题栏目");

//设置样式
mAbSlidingTabView.setTabTextColor(Color.BLACK);
mAbSlidingTabView.setTabSelectColor(Color.rgb(30, 168, 131));
mAbSlidingTabView.setTabBackgroundResource(R.drawable.tab_bg);
mAbSlidingTabView.setTabLayoutBackgroundResource(R.drawable.slide_top);

//设置间隔
mAbSlidingTabView.setTabPadding(20, 8, 20, 8);
}


}


在xml中 引用就行
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/gray_white"
android:orientation="vertical" >


<com.ab.view.sliding.AbSlidingTabView
android:id="@+id/mAbSlidingTabView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />


</RelativeLayout>

这章主要分析了下 实现的原理 和 代码的使用 ,从整的使用上来说 还是非常简单 好用。
如果 大家需要 andbase的源码 以及 andbase Demo 到网上下,或者在评论中留下你的
邮箱地址,可以分享给大家。



更多相关文章

  1. Android(安卓)startForeground 却无notification的黑科技原理分
  2. android listview adapter中设置点击直接position被重用问题解决
  3. Android(安卓)launcher动态Icon的实现方法
  4. iOS设备蓝牙类库的选择
  5. Android(安卓)适配器模式应用及设计原理
  6. Android(安卓)实现按钮 跳转到某网页
  7. android风格统一化修改上方标题栏颜色
  8. Android(安卓)dalvik虚拟机内部机制详解(2)____内存管理原理
  9. Android高仿微信图片多选功能

随机推荐

  1. 【Android】使用MediaCodec硬编码实现视
  2. android ImageView scaleType属性
  3. Android(安卓)UI开发第三十一篇——Andro
  4. Android安卓41个开源项目
  5. view属性大全
  6. Android小项目集合
  7. 如何进行Android单元测试
  8. android布局属性详解
  9. Android中通过NTP服务器获取时间功能源码
  10. Android(安卓)4.1 Jelly Bean 相关资源