android 顶部Tab实现及原理
来源:互联网 发布:mac文件储存位置 编辑:程序博客网 时间:2024/05/17 23:11
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 到网上下,或者在评论中留下你的
邮箱地址,可以分享给大家。
0 0
- android 顶部Tab实现及原理
- 页面回到顶部的实现及原理
- android选项卡(Tab)实现顶部和底部
- Android TabLayout、ViewPager实现顶部和底部Tab导航 点击滑动切换Tab页面
- 自定义View实现顶部Tab指示器
- 基于RN实现顶部tab导航切换
- android 简化并实现TabHost,SlideMenu,顶部滑动tab,引导页
- Android典型界面设计——ViewPage+Fragment实现区域顶部tab滑动切换
- Android ViewPager和Fragment实现顶部导航界面滑动效果、标签下的tab位置
- Android中应用TabLayout实现顶部Tab小菜单加滑动效果
- Android之新闻客服端顶部导航栏Tab点击和左右滑动实现切换界面
- Android开发:顶部&底部Tab导航栏实现(TabLayout+ViewPager+Fragment)
- 首页tab导航栏的实现原理及方法
- Android顶部菜单实现
- Android - 回到顶部实现
- Android实现顶部轮播图
- Android返回顶部实现
- Android刮刮卡原理及实现
- SEO实战密码——60天网站流量提高20倍(第3版)——互动出版网
- (线段树+离散化+扫描线)hdu1542.Atlantis
- nginx反向代理基本配置
- ASP.NET会话(Session)保存模式
- 如何修改python IDLE代码及语法主题 配色——拷贝的是别人喜欢的,来学会调试自己喜欢的颜色吧
- android 顶部Tab实现及原理
- Django学习(一) 安装配置Django
- nyoj 55 (摘果耗费体力最少)(队列问题)
- Gios WORD .NET Library (using RTF specification)
- js之this,请问你是谁
- 黑马程序员——Java基础---多线程
- HDOJ S-Nim 1536&POJ S-Nim 2960【求SG函数+Nim游戏】
- iphone-only apps icon
- 尊贤、谦虚、谨慎、交友、有恒、微渐、慎始终、因果