1. 程式人生 > >使用DrawerLayout+ActionBar實現側拉效果

使用DrawerLayout+ActionBar實現側拉效果

import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.app.Fragment;
import android.widget.ListView;

import java.util.ArrayList;

/*
1.完成專案XML佈局 初始化控制元件
a.根佈局 不在是LinearLayout 而是 DrawerLayout
b.寫兩個直接的子控制元件 linearLayout Fragment
c.TabLayout(依賴) 和 viewpager

    2.初始化  ActionBar 和ToolBar一樣的存在
        a.獲取一個ActionBar物件
        b.給ActionBar物件設定圖片
        c .ActionBar關聯DrawerLayout   設定drawerlayout的id
        d.DrawerLayout關聯ActionBar

    3.初始化Viewpager
        a.建立一個裝Fragement的集合
        b.建立Fragment,把Fragment新增到容器中
        c.建立ViewPager 的介面卡寫其邏輯

     4.  兩兩之間的相互關聯
        a.tabLayout 建立指示器
        b.Tablayout與Viewpager相關聯
        c.給TabLayout指示器設定文字

*/

public class MainActivity extends AppCompatActivity {

private DrawerLayout drawerLayout;
private TabLayout tabLayout;
private ViewPager viewPager;
private ActionBarDrawerToggle toggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //初始化控制元件
    initView();
    //初始化Action Bar
    initActionBar();

    //初始化viewpager
    initViewpager();

}

//初始化控制元件
private void initView() {

    drawerLayout = findViewById(R.id.drawerlayout);

    tabLayout = findViewById(R.id.tab_layout);
    viewPager = findViewById(R.id.view);

}

//設定點選左上角  能夠彈出側邊選單
private void initActionBar() {
    //獲取一個ActionBar物件
    ActionBar actionBar =getSupportActionBar();
    //給做商檢一個圖片   4.0 以上  預設圖片  給true就可以直接使用
    actionBar.setDisplayHomeAsUpEnabled(true);

    //有一個類提供了繫結DrawerLayout功能  在 values資料夾下 修改Strings.xml修改
    //c .ActionBar關聯DrawerLayout
    toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
    //c .DrawerLayout關聯ActionBar  同步
    toggle.syncState();
    drawerLayout.addDrawerListener(toggle);

}

//設定左上角的按鈕具備點選事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(toggle.onOptionsItemSelected(item)){
        return true;   //設定為true
    }

    return super.onOptionsItemSelected(item);
}

//初始化 DrawerLayout    ViewPager Fragment
private void initViewpager() {

    ArrayList<Fragment>  fragments =new ArrayList<>();
    fragments.add(new VRPanoFragment());
    fragments.add(new VrVideoFragment());

    //建立介面卡
    MyPagerAdapter adapter = new MyPagerAdapter(getFragmentManager());
    //新增集合
    adapter.setFragments(fragments);
    //新增介面卡
    viewPager.setAdapter(adapter);

    //tablayout指示器有幾個就建立幾個
    tabLayout.addTab(tabLayout.newTab());
    tabLayout.addTab(tabLayout.newTab());

    //使用指示器tablayout和viewpager
    tabLayout.setupWithViewPager(viewPager);   //兩者關聯

    //給tablayout指示器設定文字   萬物從0開始
    tabLayout.getTabAt(0).setText("開心果");
    tabLayout.getTabAt(1).setText("葡萄樹");

}

}