版权声明:叮叮叮!!!! https://blog.csdn.net/Xuexx_520/article/details/83187371
package com.example.xxx.day10_drawerlayout;
import android.app.Fragment;
import android.os.Bundle;
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.view.MenuItem;
import com.example.xxx.day10_drawerlayout.adapter.MFragmentAdapter;
import com.example.xxx.day10_drawerlayout.fragment.AFragment;
import com.example.xxx.day10_drawerlayout.fragment.BFragment;
import java.util.ArrayList;
/**
* 1.完成项目XML布局,初始化控件
* a.根布局不再是LinerLayout,而是DrawerLayout
* b.写两个直接的子控件,LinerLayout,Fragment
* c.TabLayout(依赖)和VIewPager
*
* 2.初始化ActionBar和ToolBar一样的存在
* a.获取一个ActionBar对象
* b.给ActionBar设置图片
* C.ActionBar关联DrawerLayout
* d.DrawerLayout关联ActionBar
*
* 3.初始化VIewPager
* a.创建一个装Fragment的集合
* b.创建Fragment,把Fragment添加到容器中
* c.创建VIewPager的适配器写其逻辑
*
* 4.是两两之间相互关联
* a.tabLayout创建指示器
* b.TabLayout与VIewPager相关联
* c.给TabLayout指示器设置文本
*/
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private ViewPager viewPager;
private TabLayout tabLayout;
private ActionBarDrawerToggle toggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
iniView();
//初始化ActionBar
intiActionBar();
//初始化Viewpager
initviewpager();
}
//初始ViewPager,Fragment
private void initviewpager() {
ArrayList<Fragment> list= new ArrayList<Fragment>();
list.add(new AFragment());
list.add(new BFragment());
MFragmentAdapter adapter=new MFragmentAdapter(getFragmentManager(),list);
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("游戏");
}
//设置我点击左上角,能够弹出侧边菜单
private void intiActionBar() {
//获取一个ActionBar对象
ActionBar actionBar=getSupportActionBar();
//给左上角一张图片,4.0意思默认图片,给true就可以直接使用
actionBar.setDisplayHomeAsUpEnabled(true);
//有一类提供了绑定DrawerLayout功能
toggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.open,R.string.close);
//DrawerLayout和ActionBar关联
toggle.syncState();
drawerLayout.addDrawerListener(toggle);
}
//设置左上角按钮具备点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(toggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
//初始化控件
private void iniView() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
//打开手势滑动
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
viewPager= (ViewPager) findViewById(R.id.viewpager);
tabLayout= (TabLayout) findViewById(R.id.tabs);
}
}
监听抽屉打开关闭状态
toggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.open,R.string.close){
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
Log.i("draw", "抽屉关闭了 " );
}
@Override
public void onDrawerOpened(View drawerView) {
Log.i("draw", "抽屉打开了");
}
};