1. 程式人生 > >仿網易雲音樂的滑動效果

仿網易雲音樂的滑動效果

附上demo工程下載連結:


其中:

<span style="font-family:SimHei;font-size:18px;">android.support.v7.app.ActionBarDrawerToggle:選單
android.support.v7.widget.Toolbar:原來actionbar的位置
android.support.v4.widget.DrawerLayout:側滑欄

在main_layout中:
<include layout="@layout/custom_toolbar" />  :可自定義佈局
<include layout="@layout/custom_drawerlayout" />側滑欄(前面是介面的主佈局,後面是側滑的佈局)</span>


1.toggle的使用

<span style="font-family:SimHei;font-size:18px;">setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true); //設定返回鍵可用
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open, R.string.close) {
    @Override
        public void onDrawerOpened(View drawerView) {
          super.onDrawerOpened(drawerView);
}
    @Override
        public void onDrawerClosed(View drawerView) {
          super.onDrawerClosed(drawerView);
        }
    };
mDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mDrawerToggle);</span>

2.在mainactivity中,viewpager+fragment,viewpager滑動的同時更新toolbar的顯示

<span style="font-family:SimHei;font-size:18px;">mainViewPager = (ViewPager) findViewById(R.id.mainPager);
adapter = new MainFragmentAdapter(this.getSupportFragmentManager());
mainViewPager.setAdapter(adapter);
mainViewPager.setCurrentItem(0);</span>

在fragment中在使用viewpager+fragment+TabPageIndicator(可以指示顯示的是那一頁)

a.TabIndicator的使用網上例子很多,就不再講了
b.使用getChildFragmentManager,而不用getActivity().getSupportFragmentManager()
        可以保持Fragment中資料不丟失,Fragment巢狀Fragment時要注意
c.初始化放在onActivityCreated,不放在onResume中,這裡不會重複調
  setCurrentItem(0);


<span style="font-family:SimHei;font-size:18px;">mainViewPager1 = (ViewPager) getActivity().findViewById(R.id.mainFragment_pager1);
mainViewPager1.setCurrentItem(0);
adapter = new MainFragmentAdapter_1(getChildFragmentManager());
mainViewPager1.setAdapter(adapter);
mIndicator1 =  (TabPageIndicator) getActivity().findViewById(R.id.id_indicator1);
mIndicator1.setViewPager(mainViewPager1,0);
mIndicator1.setOnPageChangeListener(new MyOnPageChangeListen());</span>