Android 原生 Android ActionBar Tab (滑动)导航
2014-07-25 11:32
375 查看
本文内容
环境项目结构演示一:ActionBarTab导航演示二:ActionBarTab带滑动导航Fragment碎片,这个思想很好。它是Android3.0新增的,有了Fragment,就可以将Activity模块化。这就好像,现在的页面都用div(层)的概念,我觉得,这大概借鉴了photoshop的layer(图层)的理念。
下载Demo
环境
Windows2008R264位EclipseADTV22.6.2,Android4.4.2(API19)SAMSUNGGT-8618,AndroidOS4.1.2项目结构
图1项目结构图2主程序界面
如图1所示,唯一需要注意的是,DummiyFragment1和DummiyFragment2虽然内容完全相同,但它们继承的类不同。DummiyFragment1继承android.app.Fragment,而DummiyFragment2继承android.support.v4.Fragment。
演示ActionBarTab导航
图3Tab导航
核心代码如下所示:
publicclassActionBarTabNavTestextendsActivityimplements
ActionBar.TabListener{
privatestaticfinalStringSELECTED_ITEM="selected_item";
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabnav);
finalActionBaractionBar=getActionBar();
//设置ActionBar的导航方式:Tab导航
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//依次添加3个Tab页,并为3个Tab标签添加事件监听器
actionBar
.addTab(actionBar.newTab().setText("第一页").setTabListener(this));
actionBar
.addTab(actionBar.newTab().setText("第二页").setTabListener(this));
actionBar
.addTab(actionBar.newTab().setText("第三页").setTabListener(this));
}
@Override
publicvoidonRestoreInstanceState(BundlesavedInstanceState){
if(savedInstanceState.containsKey(SELECTED_ITEM)){
//选中前面保存的索引对应的Fragment页
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(SELECTED_ITEM));
}
}
//将当前选中的Fragment页的索引保存到Bundle中
@Override
publicvoidonSaveInstanceState(BundleoutState){
outState.putInt(SELECTED_ITEM,getActionBar()
.getSelectedNavigationIndex());
}
@Override
publicvoidonTabUnselected(ActionBar.Tabtab,
FragmentTransactionfragmentTransaction){
}
//当指定Tab被选中时激发该方法
@Override
publicvoidonTabSelected(ActionBar.Tabtab,
FragmentTransactionfragmentTransaction){
//创建一个新的Fragment对象
Fragmentfragment=newDummyFragment1();
//创建一个Bundle对象,用于向Fragment传入参数
Bundleargs=newBundle();
args.putInt(DummyFragment2.ARG_SECTION_NUMBER,tab.getPosition()+1);
//向fragment传入参数
fragment.setArguments(args);
//获取FragmentTransaction对象
FragmentTransactionft=getFragmentManager().beginTransaction();
//使用fragment代替该Activity中的container组件
ft.replace(R.id.container,fragment);
//提交事务
ft.commit();
}
@Override
publicvoidonTabReselected(ActionBar.Tabtab,
FragmentTransactionfragmentTransaction){
}
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
演示ActionBarTab带滑动导航
图4Tab滑动导航
核心代码如下所示:
publicclassActionBarTabSwipeNavTestextendsFragmentActivityimplements
ActionBar.TabListener{
ViewPagerviewPager;
ActionBaractionBar;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabswipenav);
//获取ActionBar对象
actionBar=getActionBar();
//获取ViewPager
viewPager=(ViewPager)findViewById(R.id.pager);
//创建一个FragmentPagerAdapter对象,该对象负责为ViewPager提供多个Fragment
FragmentPagerAdapterpagerAdapter=newFragmentPagerAdapter(
getSupportFragmentManager()){
//获取第position位置的Fragment
@Override
publicFragmentgetItem(intposition){
Fragmentfragment=newDummyFragment2();
Bundleargs=newBundle();
args.putInt(DummyFragment2.ARG_SECTION_NUMBER,position+1);
fragment.setArguments(args);
returnfragment;
}
//该方法的返回值i表明该Adapter总共包括多少个Fragment
@Override
publicintgetCount(){
return3;
}
//该方法的返回值决定每个Fragment的标题
@Override
publicCharSequencegetPageTitle(intposition){
switch(position){
case0:
return"第一页";
case1:
return"第二页";
case2:
return"第三页";
}
returnnull;
}
};
//设置ActionBar使用Tab导航方式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//遍历pagerAdapter对象所包含的全部Fragment。
//每个Fragment对应创建一个Tab标签
for(inti=0;i<pagerAdapter.getCount();i++){
actionBar
.addTab(actionBar.newTab()
.setText(pagerAdapter.getPageTitle(i))
.setTabListener(this));
}
//为ViewPager组件设置FragmentPagerAdapter
viewPager.setAdapter(pagerAdapter);//①
//为ViewPager组件绑定事件监听器
viewPager
.setOnPageChangeListener(newViewPager.SimpleOnPageChangeListener(){
//当ViewPager显示的Fragment发生改变时激发该方法
@Override
publicvoidonPageSelected(intposition){
actionBar.setSelectedNavigationItem(position);
}
});
}
@Override
publicvoidonTabUnselected(ActionBar.Tabtab,
FragmentTransactionfragmentTransaction){
}
//当指定Tab被选中时激发该方法
@Override
publicvoidonTabSelected(ActionBar.Tabtab,
FragmentTransactionfragmentTransaction){
viewPager.setCurrentItem(tab.getPosition());//②
}
@Override
publicvoidonTabReselected(ActionBar.Tabtab,
FragmentTransactionfragmentTransaction){
}
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
相关文章推荐
- Android典型界面设计(6)——ActionBar Tab+ViewPager+Fagment实现滑动导航
- Android Fragment 学习<2> 滑动TAb导航(ActionBar)
- Android典型界面设计(6)——ActionBar Tab+ViewPager+Fagment实现滑动导航
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- Android入门之ActionBar实现Tab导航
- Android开发学习之ActionBar之Tab和Spinner导航
- Android tab导航的几种方法:ActionBar tab +fragment,Viewpager+pagerTitleStrip,开源框架ViewPageIndicator 和 ViewPager
- Android ActionBar+ViewPager 实现左右滑动Tab
- (Android 基础知识) ActionBar.Tab---导航Tab(标签)
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- Android入门之ActionBar实现Tab导航
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 【Android】使用Actionbar Tab导航
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表