Bottombar
Bottombar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退。于是就用这种方式实现了,效果还不错。github有详细说明,多余的就不说了。
这个roughike是这个项目的所有者(大神致敬)。
我用的是AndroID studio开发,fragment全部导的V4的包(以为最开始就支持的是v4的,后面也支持了app.fragment).
首先是dependencIEs
compile 'com.jakewharton:butterknife:7.0.0'
compile 'com.roughike:bottom-bar:1.3.3'
添加第二个就行了,我这用到了butterknife(不知道的可以百度,出自jakewharton大神的一款VIEw注入框架)。
从menu添加items
res/menu/bottombar_menu.xml
<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID"><itemandroID:ID="@+ID/bb_menu_recents"androID:icon="@drawable/ic_recents"androID:title="Recents" /><itemandroID:ID="@+ID/bb_menu_favorites"androID:icon="@drawable/ic_favorites"androID:title="Favorites" /><itemandroID:ID="@+ID/bb_menu_nearby"androID:icon="@drawable/ic_nearby"androID:title="Nearby" /><itemandroID:ID="@+ID/bb_menu_frIEnds"androID:icon="@drawable/ic_frIEnds"androID:title="FrIEnds" /><itemandroID:ID="@+ID/bb_menu_food"androID:icon="@drawable/ic_restaurants"androID:title="Food" /></menu>
在activity中初始化Bottombar和VIEwPager
public class MainActivity extends FragmentActivity {@Bind(R.ID.vIEwPager)VIEwPager vIEwPager;@Bind(R.ID.myCoordinator)CoordinatorLayout myCoordinator;private Bottombar mBottombar;private List<Fragment> fragmentList;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);ButterKnife.bind(this);initVIEwPager();createBottombar(savedInstanceState);}private voID createBottombar(Bundle savedInstanceState) {mBottombar = Bottombar.attachShy(myCoordinator,vIEwPager,savedInstanceState);mBottombar.setItemsFromMenu(R.menu.bottombar_menu,new OnMenuTabClickListener() {@OverrIDepublic voID onMenuTabSelected(@IDRes int menuItemID) {switch (menuItemID) {case R.ID.bb_menu_recents:vIEwPager.setCurrentItem(0);break;case R.ID.bb_menu_favorites:vIEwPager.setCurrentItem(1);break;case R.ID.bb_menu_nearby:break;case R.ID.bb_menu_frIEnds:break;case R.ID.bb_menu_food:break;}}@OverrIDepublic voID onMenuTabReSelected(@IDRes int menuItemID) {}});// Setting colors for different tabs when there's more than three of them.// You can set colors for tabs in three different ways as shown below.mBottombar.mapcolorForTab(0,ContextCompat.getcolor(this,R.color.colorAccent));mBottombar.mapcolorForTab(1,0xFF5D4037);mBottombar.mapcolorForTab(2,"#7B1FA2");mBottombar.mapcolorForTab(3,"#FF5252");mBottombar.mapcolorForTab(4,"#FF9800");}@OverrIDepublic voID onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);// Necessary to restore the Bottombar's state,otherwise we would// lose the current tab on orIEntation change.mBottombar.onSaveInstanceState(outState);}private voID initVIEwPager() {fragmentList = new ArrayList<>();fragmentList.add(new FragmentOne());fragmentList.add(new FragmentTwo());vIEwPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {@OverrIDepublic Fragment getItem(int position) {return fragmentList.get(position);}@OverrIDepublic int getCount() {return fragmentList.size();}});vIEwPager.addOnPagechangelistener(new VIEwPager.OnPagechangelistener() {@OverrIDepublic voID onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {}@OverrIDepublic voID onPageSelected(int position) {mBottombar.selectTabAtposition(position,true);}@OverrIDepublic voID onPageScrollStateChanged(int state) {}});}}
Bottombar的github上提供了两种初始化方式,这里是第二种实现下滑隐藏,因为是fragment滚动所以fragment的布局要被nestedScrollVIEw包裹(下面贴代码,很简单的),同时注意vIEwPager.setonPagechangelistener已经过时了。
layout/activity_main.xml
<?xml version="1.0" enCoding="utf-8"?><androID.support.design.Widget.CoordinatorLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:ID="@+ID/myCoordinator"xmlns:tools="http://schemas.androID.com/tools"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:fitsSystemwindows="true"tools:context="com.example.bottombar.bottombar.MainActivity"><androID.support.v4.vIEw.VIEwPagerandroID:ID="@+ID/vIEwPager"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"/></androID.support.design.Widget.CoordinatorLayout>
FragmentOne.Java
public class FragmentOne extends Fragment {VIEw v;Context context;@Nullable@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater,@Nullable VIEwGroup container,@Nullable Bundle savedInstanceState) {v = inflater.inflate(R.layout.fragment_one,container,false);context = getActivity();return v;}}
layout/fragment_one.xml
<?xml version="1.0" enCoding="utf-8"?><androID.support.v4.Widget.nestedScrollVIEwandroID:ID="@+ID/myScrollVIEw"xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"><relativeLayoutandroID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:padding="20dp"><TextVIEwandroID:layout_centerInParent="true"androID:layout_wIDth="match_parent"androID:layout_height="wrap_content"androID:text="@string/baIDuInfo"/></relativeLayout></androID.support.v4.Widget.nestedScrollVIEw>
以上所述是小编给大家介绍的AndroID 开发之Bottombar+VIEwPager+Fragment实现炫酷的底部导航效果的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果全部内容,希望文章能够帮你解决Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)