使用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("葡萄树");

}

}

猜你喜欢

转载自blog.csdn.net/qq_42795723/article/details/83090701