当前位置: 首页 > 编程笔记 >

Android DrawerLayout带有侧滑功能的布局类(2)

常子濯
2023-03-14
本文向大家介绍Android DrawerLayout带有侧滑功能的布局类(2),包括了Android DrawerLayout带有侧滑功能的布局类(2)的使用技巧和注意事项,需要的朋友参考一下

ActionBarDrawerToggle:
在前一张中我们并没有使用drawLayout.setDrawerListener(); 
对应的参数对象就是DrawerLayout.DrawerListener: 

 public interface DrawerListener {
    void onDrawerSlide(View var1, float var2);

    void onDrawerOpened(View var1);

    void onDrawerClosed(View var1);

    void onDrawerStateChanged(int var1);
  }

本文讲一下drawLayout.setDrawerListener(toggle);方式,ActionBarDrawerToggle 就是实现了这个接口。他主要作用在于。
 •改变ActionBar上的返回按钮图片(android.R.id.home)
 •在打开和关闭Drawer的时候,ActionBar的返回图标会有动画效果。
 •监听侧边栏的打开和收起 

在点击侧边菜单选项的时候我们往往需要隐藏菜单来显示整个菜单对应的内容。ActionBarDrawerToggle就是其中一种方法。
你也可以不用ActionBarDrawerToggle直接用import android.support.v4.widget.DrawerLayout.DrawerListener;
然后DrawerLayout相关在上一个文章中已经介绍了就不一一说明了。就从DrawerLayout的监听开始。
我们今天用的包如下:
 import android.support.v4.app.ActionBarDrawerToggle;
首先我们初始化一个ActionBarDrawerToggle : 

toggle = new ActionBarDrawerToggle(
    this,         /* host Activity */
    mDrawerLayout,     /* DrawerLayout object */
    R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
    R.string.drawer_open, /* "open drawer" description for accessibility */
    R.string.drawer_close /* "close drawer" description for accessibility */
    ) {
  public void onDrawerClosed(View view) {
    getActionBar().setTitle(mTitle);
    invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  }
  public void onDrawerOpened(View drawerView) {
    getActionBar().setTitle(mDrawerTitle);
    invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  }
};

初始化相关比较简单看注释就行。在监听的回调方法中我们用invalidateOptionsMenu通知activity重绘menu,然后activity就有机会在onPrepareOptionsMenu方法中更新menu元素的显示与隐藏。 
接下来需要设置一下ActionBar: 

private void initActionBar() {    

 // enable ActionBar app icon to behave as action to toggle nav drawer
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeButtonEnabled(true);
  } 

不难看出是显示菜单键以及设置为可点击使用的菜单键。

ActionBar相关设置:
 •setHomeButtonEnabled //这个小于4.0版本的默认值为true的。但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击  false 不可以点击。
 •actionBar.setDisplayHomeAsUpEnabled(true)    // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP
 •actionBar.setDisplayShowCustomEnabled(true)  // 使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用,对应ActionBar.DISPLAY_SHOW_CUSTOM
 •actionBar.setDisplayShowTitleEnabled(true)   //对应ActionBar.DISPLAY_SHOW_TITLE。 
然后我们需要绑定此监听器: 
mDrawerLayout.setDrawerListener(toggle);
之后我们需实现Acitivity的一下代码才能使用: 

@Override
  protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
     toggle.syncState();
  }

  @Override
  public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Pass any configuration change to the drawer toggls
     toggle.onConfigurationChanged(newConfig);
  }

  @Override
  public boolean onOptionsIwotemSelected(MenuItem item) {
    // The action bar home/up action should open or close the drawer.
    // ActionBarDrawerToggle will take care of this.
     if (toggle.onOptionsItemSelected(item)) {
     return true;
     }
    return super.onOptionsItemSelected(item);
  }

在这里如果不去实现onOptionsIwotemSelected中的代码那么点击菜单是没有效果的。

现在运行代码后可以看出如下效果:

在android.support.v7.app.ActionBarDrawerToggle;中的ActionBarDrawerToggle第三个参数 
即:R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ 
更换为Toolbar对象,这样一来你可以自定一个Toolbar做更为漂亮UI。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Android DrawerLayout带有侧滑功能的布局类(1),包括了Android DrawerLayout带有侧滑功能的布局类(1)的使用技巧和注意事项,需要的朋友参考一下 DrawerLayout顾名思义就是一个管理布局的。使用方式可以与其它的布局类类似。 DrawerLayout带有滑动的功能。只要按照drawerLayout的规定布局方式写完布局,就能有侧滑的效果。 直

  • 我想创建一个应用程序,使用带有滑动视图的选项卡布局(类似于这样): 问题来了:我在网上到处找一个可以解释如何做这种事情的指南,但我所做的一切都对我不起作用。我在某个地方读到标签布局与Lollipop是不推荐的,所以我试图找到一个替代的方法来做我想做的事情,但什么也没有。我试图创建的每个选项卡布局应用程序在测试时都以崩溃告终,我认为这是由于的某些原因,总是因为选项卡在Lollipop中是不推荐的。我

  • 本文向大家介绍iOS push侧滑返回功能实现方法,包括了iOS push侧滑返回功能实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS push侧滑返回功能的具体代码,供大家参考,具体内容如下 开启iOS自带的push的侧滑返回功能(只有左侧边缘地带响应侧滑返回,并不是全局响应): 为防止导航控制器在根视图时触发手势 这样 在根视图侧滑返回操作,然后出发push会没有效

  • 问题内容: 我正在尝试在CSS中实现一个设计,该设计在主体上具有平铺的背景。我想在内容背景中使用png图像作为主体背景上的椭圆形不透明蒙版。侧栏(以及带有修剪过的溢出的支撑的页脚)将具有部分不透明的黑色背景,与.png蒙版的边缘匹配。 目的是要有一个具有复杂背景图案的固定尺寸中心区域,该背景图案将填充任何大小的浏览器窗口。 我想不出该怎么做。似乎不足以满足我的背景要求,并且我认为我可以在不丢失居中

  • 本文向大家介绍使用DrawerLayout组件实现侧滑抽屉的功能,包括了使用DrawerLayout组件实现侧滑抽屉的功能的使用技巧和注意事项,需要的朋友参考一下 DrawerLayout组件同样是V4包中的组件,也是直接继承于ViewGroup类,所以这个类也是一个容器类。使用DrawerLayout可以轻松的实现抽屉效果,使用DrawerLayout的步骤有以下几点: 1)在DrawerLay

  • 本文向大家介绍Android实现QQ侧滑(删除、置顶等)功能,包括了Android实现QQ侧滑(删除、置顶等)功能的使用技巧和注意事项,需要的朋友参考一下 实现类似QQ滑动出现可操作项的功能,在网上看到有人自定义LinearLayout实现这个效果,但是灵活性有限。此demo使用开源项目SwipeLayout实现该功能。关于SwipeLayout的常用设置和属性,这里都做介绍,下面进入正题。 一、