Android的抽屉导航:

文件夹布局:

layout布局文件夹:

activity_main.xml 主入口文件

app_bar_main.xml 主内容文件:viewPager为多个页面,可以滑动,也可以对应抽屉的导航

nav_header_main 抽屉的头部

page1.xml

page2.xml

page3.xml

menu菜单文件夹

activity_main_drawer 抽屉的菜单导航

values文件夹

strings.xml内容就直接写:

我的抽屉

Settings

Open navigation drawer

Close navigation drawer

1. 主要视图:activity_main.xml文件

2. app_bar_main.xml 文件为内容

3.activity_main_drawer.xml 抽屉导航

主入口java:mainactivity.java

import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private NavigationView mNavView; 抽屉的导航菜单

private MenuItem mNavFile;

private DrawerLayout drawerLayout; 抽屉外壳

private ViewPager mViewPager; 视图

private Listviews; 视图总和

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); // 主入口布局

initView();

}

private void initView() {

抽屉

mNavView = (NavigationView) findViewById(R.id.nav_view); // 导航

drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // 抽屉

setNavItemListener(); // 设置导航监听事件

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // 头部

setSupportActionBar(toolbar);

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(

this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);

drawerLayout.setDrawerListener(toggle);

toggle.syncState(); /// 控制抽屉的显示隐藏

views = new ArrayList(); 页面集合

LayoutInflater mLi = LayoutInflater.from(this);

View view1 = mLi.inflate(R.layout.page1, null);

views.add(view1);

View view2 = mLi.inflate(R.layout.page2, null);

views.add(view2);

View view3 = mLi.inflate(R.layout.page3, null);

views.add(view3);

mViewPager = (ViewPager) findViewById(R.id.viewPager); /// 分页视图的框架

MyPagerAdapter adapter = new MyPagerAdapter();

mViewPager.setAdapter(adapter); /// 设置适配器

mViewPager.setCurrentItem(0); /// 设置初始页面

mViewPager.setOffscreenPageLimit(3); /// 设置缓存页面后,可以获取缓存页面的btn

/// 监听视图框滑动事件:

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override

public void onPageSelected(int position) {

if (position == 0) {

LogSdk.v("zdf .......滑动到:" + position);

mNavView.setCheckedItem(R.id.nav_1); // 视图滑动同时导航也要匹配

} else if (position == 1) {

mNavView.setCheckedItem(R.id.nav_1); // 视图滑动同时导航也要匹配

} else if (position == 2) {

mNavView.setCheckedItem(R.id.nav_1); // 视图滑动同时导航也要匹配

}

}

@Override

public void onPageScrollStateChanged(int state) {

}

});

}

抽屉导航item 点击事件监听

private void setNavItemListener() {

mNavView.setCheckedItem(R.id.nav_1); // 初始选中

mNavView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

@Override

public boolean onNavigationItemSelected(@NonNull MenuItem item) {

// 当前导航被选中:

item.setChecked(true);

drawerLayout.closeDrawers(); 关闭导航菜单

if (item.getItemId() == R.id.nav_1) {

mViewPager.setCurrentItem(0); // 对应的视图切换

} else if (item.getItemId() == R.id.nav_2) {

mViewPager.setCurrentItem(1);

} else if (item.getItemId() == R.id.nav_3) {

mViewPager.setCurrentItem(2);

}

return true;

}

});

}

// 创建viewPager的适配器

class MyPagerAdapter extends PagerAdapter {

@Override

public int getCount() {

// 返回要滑动的VIew的个数

// TODO Auto-generated method stub

return views.size();

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

// TODO Auto-generated method stub

return arg0 == arg1; //这行代码很重要,它用于判断你当前要显示的页面

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

// 第一:将当前视图添加到container中,第二:返回当前View

container.addView(views.get(position));

// 找到页面的btn

if (position == 0) {

initPageOne(); // 在适配器里面去获取响应的页面的id

} else if (position == 1) {

} else if (position == 2) {

}

return views.get(position);

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

// 从当前container中删除指定位置(position)的View;

container.removeView(views.get(position));

}

}

}

android studio 抽屉,Android Studio 的抽屉导航相关推荐

  1. android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具

    记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇 Google主推-Android开发利器--Android Studio,这可能是最全 ...

  2. android 纵向抽屉,Android导航抽屉垂直边框

    试试这个, DrawerLayout mDrawerLayout; onCreate(Bundle ...){ //... mDrawerLayout.setDrawerShadow(R.drawab ...

  3. 介绍Visual Studio的Android模拟器

    介绍Visual Studio的Android模拟器 http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/introducing-vi ...

  4. android 自定义抽屉,android – 动作栏抽屉切换自定义图标

    我正在尝试使用操作栏抽屉切换,但我希望它显示的不仅仅是菜单图标.我希望它在我的自定义菜单图标的右上角显示通知计数,但我仍然希望操作栏抽屉切换以在需要时显示后退箭头. 因此,我首先尝试在操作栏抽屉切换时 ...

  5. android左侧抽屉,Android控件之左侧抽屉菜单

    Android 抽屉效果的导航菜单实现 抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而 ...

  6. 适用于 Visual Studio 的 Android 游戏开发扩展

    在 Windows 计算机上设置 Android 游戏开发扩展并在 Android 设备或模拟器上运行示例 Visual Studio C++ 项目. 先决条件 按照本节中的步骤准备您的 Window ...

  7. android中仿qq最新版抽屉,Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑)...

    自己实现了一下侧滑的三种方式(注释都写代码里了) 本文Demo下载地址:Andriod侧滑 本文实现所需框架:nineoldandroids下载地址:nineoldandroids 1.普通侧滑: 主 ...

  8. android dimensions.xml,[Android Studio #2] 操作資源XML檔

    利用Android Studio產生出第一個程式後,點擊Project按鈕觀察專案的目錄結構,再研究資源檔的使用方法,同時在第一個程式畫面裡增加另一個文字元件. Android Studio的專案目錄 ...

  9. android studio visual studio 2015,Visual Studio Emulator for Android

    Visual Studio Emulator for Android 11/15/2016 4 分钟可看完 本文内容 Note This article applies to Visual Studi ...

  10. 使用Android Studio搭建Android集成开发环境

    一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...

最新文章

  1. C语言中的static 详细分析 2014-10-11 15:15 143人阅读 评论(0) 收藏...
  2. element el-popover 使用v-if 控制显示/隐藏,当条件变化时,里面有部分内容无法显示
  3. 研究生做毕设,用到深度学习,没有GPU该怎么办
  4. 还不会使用分布式锁?教你三种分布式锁实现的方式
  5. BUG Error:Execution failed for task ':app:dexDebug'.
  6. 收藏!深度学习必读10篇经典算法论文总结!
  7. 利用电影直播赚钱的方法(几乎零成本、很多人不知道)
  8. Apollo3.0 canbus代码解析(未完成,待修改)
  9. MaxScript批量修改材质、贴图名称
  10. 桩身弹性压缩计算公式_压缩弹簧弹力的计算公式
  11. python儿童编程入门-如何让孩子轻松学习Python编程
  12. Spring关于@required注解
  13. 小罗说敏捷 | 使用关键路径法优化项目进度管理
  14. Android USB Tethering的实现以及代码流程
  15. word 文档如何加密
  16. java中UPD的一个简单的例子
  17. OpenCV项目1-OCR识别
  18. switch()的参数类型
  19. 冬季最新流行的室内运动减肥
  20. 网页链接分享到微信里的海报制作

热门文章

  1. [网络安全学习篇10]:扫描技术、暴力破解工具(千峰网络安全视频笔记 10 day)
  2. 电路与模拟电子技术----正弦交流电路(上)
  3. 软件构造——可维护性
  4. 联想(IBM)thinkpad-SL400笔记本安装xp系统完全过程
  5. Cython编译python为so 代码加密
  6. android性能测试 app 实时流量获取
  7. oracle cloud技术帖,Oracle Cloud初体验
  8. 点击链接 qq咨询 代码
  9. Java基于opencv实现图像数字识别(一)
  10. Matlab按顺序读取文件夹内图片