一:先看一下框架搭建后的效果图
,二:框架结构
(1)底部导航栏采用的是: MainActivity(主框架),
MsgFragment(首页),
HistoryFragment(历史清单含顶部导航栏),
mineFragment(我的)。
(2)自定义标题栏(自定义toolbar)
三:底部导航栏的实现
主要代码:
MainActivity:
1 //定义底部文字 2 private final int[] TAB_TitleS = new int[]{ 3 R.string.menu_msg, R.string.menu_history, R.string.menu_mine 4 }; 5 //定义底部图标 6 private final int[] TAB_imgS = new int[]{ 7 R.drawable.tab_main_msg, R.drawable.tab_main_history, R.drawable.tab_main_mine 8 }; 9 //黄油刀 找到控件10 @BindVIEw(R.ID.vIEw_pager)11 VIEwPager vIEwPager;12 @BindVIEw(R.ID.tab_layout)13 TabLayout tabLayout;14 15 //定义适配器16 private PagerAdapter pagerAdapter;17 18 19 20 21 //初始化页卡22 private voID initPager() {23 pagerAdapter = new MainFragmentAdapter(getSupportFragmentManager());24 vIEwPager.setAdapter(pagerAdapter);25 vIEwPager.addOnPagechangelistener(new TabLayout.TabLayoutOnPagechangelistener(tabLayout));26 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {27 @OverrIDe28 public voID onTabSelected(TabLayout.Tab tab) {29 vIEwPager.setCurrentItem(tab.getposition(), false);30 }31 32 @OverrIDe33 public voID onTabUnselected(TabLayout.Tab tab) {34 35 }36 37 @OverrIDe38 public voID onTabReselected(TabLayout.Tab tab) {39 40 }41 });42 }43 44 45 //设置页卡显示效果46 private voID setTabs(TabLayout tabLayout, LayoutInflater inflater, int[] tabTitles, int[] tabimgs) {47 for (int i = 0; i < tabimgs.length; i++) {48 TabLayout.Tab tab = tabLayout.newTab();49 VIEw vIEw = inflater.inflate(R.layout.item_main_menu, null);50 //使用自定义视图,便于修改51 tab.setCustomVIEw(vIEw);52 TextVIEw tvTitle = (TextVIEw) vIEw.findVIEwByID(R.ID.txt_tab);53 tvTitle.setText(tabTitles[i]);54 ImageVIEw imgTab = (ImageVIEw) vIEw.findVIEwByID(R.ID.img_tab);55 imgTab.setimageResource(tabimgs[i]);56 tabLayout.addTab(tab);57 }58 }
MainActivity.xml:
1 <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" 2 xmlns:app="http://schemas.androID.com/apk/res-auto" 3 xmlns:tools="http://schemas.androID.com/tools" 4 androID:layout_wIDth="match_parent" 5 androID:layout_height="match_parent" 6 androID:orIEntation="vertical" 7 tools:context=".MainActivity"> 8 <relativeLayout 9 androID:layout_wIDth="match_parent"10 androID:layout_height="wrap_content"11 >12 <com.example.myapplication.mytoobar.CustomToolbar13 androID:ID="@+ID/bar1"14 androID:layout_wIDth="match_parent"15 androID:layout_height="wrap_content"/>16 <VIEw17 androID:layout_wIDth="match_parent"18 androID:layout_height="0.5dp"19 androID:background="@color/line_gray"20 androID:layout_alignBottom="@+ID/bar1"></VIEw>21 </relativeLayout>22 <androID.support.v4.vIEw.VIEwPager23 androID:ID="@+ID/vIEw_pager"24 androID:layout_wIDth="match_parent"25 androID:layout_height="0dip"26 androID:layout_weight="1" />27 28 <VIEw29 androID:layout_wIDth="match_parent"30 androID:layout_height="0.5dip"31 androID:background="@color/line_gray" />32 33 <androID.support.design.Widget.TabLayout34 androID:ID="@+ID/tab_layout"35 androID:layout_wIDth="match_parent"36 androID:layout_height="100dp"37 app:tabIndicatorHeight="0dip" />38 39 </linearLayout>
Adapter:
1 @OverrIDe 2 public Fragment getItem(int i) { 3 Fragment fragment = null; 4 switch (i) { 5 case 0: 6 fragment = new MsgFragment(); 7 break; 8 case 1: 9 fragment = new HistoryFragment();10 break;11 case 2:12 fragment = new mineFragment();13 break;14 default:15 break;16 }17 return fragment;18 19 }20 21 @OverrIDe22 public int getCount() {23 return 3;24 }
四:自定义标题栏的实现
关键代码:
toolbar.xml:
1 <ImageVIEw 2 androID:layout_wIDth="wrap_content" 3 androID:layout_height="wrap_content" 4 5 6 androID:src="@mipmap/ic_launcher" 7 androID:layout_gravity="left" 8 /> 9 <TextVIEw10 androID:ID="@+ID/tv_Title"11 androID:layout_wIDth="wrap_content"12 androID:layout_height="wrap_content"13 androID:text="SubwayGo"14 androID:textcolor="#000000"15 androID:layout_gravity="center"16 androID:singleline="true"17 androID:visibility="visible"18 androID:textSize="30dp"19 androID:FontFamily="cursive"20 />21 <TextVIEw22 androID:layout_wIDth="wrap_content"23 androID:layout_height="wrap_content"24 androID:textSize="20dp"25 androID:textcolor="@color/colorPrimaryDark"26 androID:text="设置"27 androID:gravity="center"28 androID:layout_gravity="right"29 androID:visibility="visible"30 />
1 public class CustomToolbar extends Toolbar { 2 3 public CustomToolbar(Context context){ 4 this(context,null); 5 } 6 public CustomToolbar(Context context, AttributeSet attrs) { 7 this(context, attrs,0); 8 } 9 public CustomToolbar(Context context,AttributeSet attrs,int defStyleAttr){10 super(context,attrs,defStyleAttr);11 inflate(context, R.layout.toolbar,this);12 }13 }
五:总结一下,以上代码都是关键代码,至于点击事件的设置,页面数据的传递等等比较基础,就不附上了。下一篇会对线路的最优路径进行选择。
总结
以上是内存溢出为你收集整理的Android项目开发之--------地铁时光机(一,搭建主框架)全部内容,希望文章能够帮你解决Android项目开发之--------地铁时光机(一,搭建主框架)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)