博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 DrawerLayout 实现 Material Design风格的侧滑
阅读量:6165 次
发布时间:2019-06-21

本文共 2944 字,大约阅读时间需要 9 分钟。

先看效果吧!

效果一:

 

Android 2.3 效果

 

Android 5.0 效果

效果二:

 

Android 2.3 效果

 

Android 5.0 效果

分析:

1.0 效果一和效果二的区别 drawerLayout 跟 ActionBar 的位置区别,

效果一会覆盖 ActionBar,
效果二显示在ActionBar 下方.

  • Android 2.3 和5.0的区别是5.0的状态栏和 app 连在一块了.更统一了.

下面是2种方式的实现(本工程是以 android studio 实现):

1.0 首先在项目的工程底下的 Build,gradle

dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:21.0.3'}

studio 在新建的时间默认是有的,检查一下 appcompat 的版本,在这之上版本都可以.

value 下的dimens.xml

0dp

value 下的style.xml

在 value-v21(没有就新建) dimens.xml

24dp

在 value-v21(没有就新建) 下的style.xml

    

NoActionBarAppTheme: 适用使用 ToolBar 来代替 ActionBar 的Activity

AppTheme :适用在使用 ActionBar上的 Activity.

效果一:

布局文件:

<............这里写你自己 的布局...../>

以android.support.v4.widget.DrawerLayout 为根控件.

DrawerLayout下包裹两个控件.第一个控件是内容控件,第二个是侧滑控件
使用android:layout_gravity 来指定它的滑动位置, start 表示从左滑出, end 表示从右滑出.

Toolbar 里面有两个属性很关键:

android:minHeight="?attr/actionBarSize",这个表示引用系统 ActionBar 的高度.
android:paddingTop="@dimen/tool_bar_top_padding"这个是来引用资源文件里面的tool_bar_top_padding的高度,这个高度主要是为了对5.0做适配,在5.0 上为24dp,其他版本为0dp

效果1的 androidmanifest.xml 是这样定义的

效果1的 在 activity onCreate()中这样写道:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolBar);        DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer); toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));        setSupportActionBar(toolbar);        ActionBarDrawerToggle actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.open_string,R.string.close_string);        actionBarDrawerToggle.syncState();     drawerLayout.setDrawerListener(actionBarDrawerToggle);

效果二:

布局文件

<............这里写你自己 的布局...../>

相较于效果一,他并没有使用 toolBar 来代替 ActionBar 所以它的主题是AppTheme

在 androidmanifest.xml中:

在 Activity onCreate 中这样写道:

drawerLayout= (DrawerLayout) findViewById(R.id.drawer);        getSupportActionBar().setHomeButtonEnabled(true);        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        ActionBarDrawerToggle actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.open_string,R.string.close_string);        actionBarDrawerToggle.syncState();       drawerLayout.setDrawerListener(actionBarDrawerToggle);

在 Activity onOptionsItemSelected 方法

int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == android.R.id.home) {            if(  drawerLayout.isDrawerOpen(GravityCompat.START)                    ){                drawerLayout.closeDrawers();            }else{                drawerLayout.openDrawer(GravityCompat.START);            }            return true;        }        return super.onOptionsItemSelected(item);

转载于:https://www.cnblogs.com/youseiraws/p/7076266.html

你可能感兴趣的文章
在Linux下编译安装Apache2(2)
查看>>
Method Swizzling 处理一类简单的崩溃
查看>>
AngularJS学习!
查看>>
在Eclipse中搭建Python Django
查看>>
struts国际化
查看>>
Laravel 5.0 - Middleware (中间件)
查看>>
文件特殊权限及facl
查看>>
我的友情链接
查看>>
Android按两次返回键退出应用
查看>>
第一章:认识Redhat Linux
查看>>
文本查看指令
查看>>
我的友情链接
查看>>
android开源项目框架大全:《IT蓝豹》
查看>>
Java四种引用
查看>>
Android中的动画详解系列【2】——飞舞的蝴蝶
查看>>
C Primer Plus (Stephen Prata 著)
查看>>
idea新建web项目并配置运行教程
查看>>
Robot Framework(4)——Selenium2Library关键字
查看>>
vi 基本使用命令
查看>>
DSOFramer使用说明(转载)))
查看>>