Google官方抽屉DrawerLayout使用心得、踩坑经验以及定制化

本文详细介绍了Google DrawerLayout的基础使用和高级应用,包括如何设置抽屉颜色、调整触发区域以及动画间隔。同时,文章揭示了在实际使用中遇到的坑,如初始化LayoutParams时的错误、多点触摸时的ArrayIndexOutOfBoundsException以及抽屉卡住无法拖动的问题,并提供了相应的解决办法。
摘要由CSDN通过智能技术生成

基础使用

这里要介绍的是google的DrawerLayout,行为可见google官方应用如gmail,看手Q的抽屉,应该是根据android-undergarment项目来定制的一个控件。

Google Desgin GuildLines里面有介绍:http://www.google.com/design/spec/layout/structure.html#structure-system-bars

官方教程:Creating a Navigation Drawer

DrawerLayout添加在主内容区的上层,作为parent,下面的第一个child是主内容区域,第二个child则可以是其他任何东西,需要作为抽屉的view则需要声明android:layout_gravity。

DrawerLayout的setScrimColor可以设置抽屉拉出时右侧主内容剩余区域上面盖的颜色(默认0x99000000)。

高级应用

DrawerLayout默认只有在边缘的一个edge能够触发抽屉拉取的动作,而这个是通过ViewDragHelper这个类来实现的。

    private static final int EDGE_SIZE = 20; // dp

    private static final int BASE_SETTLE_DURATION = 256; // ms
    private static final int MAX_SETTLE_DURATION = 600; // ms

EDGE_SIZE是触发区域,默认20dp,而BASE_SETTLE_DURATION和MAX_SETTLE_DURATION则是控制抽屉从打开到关闭之间的这个间隔。由于是私有静态常量,可以通过

    public static void setDrawerLeftEdgeSize(DrawerLayout drawerLayout, float dp) {
        if (drawerLayout == null) {
            return;
        }

        try {
            // find ViewDragHelper and set it accessible
            Field leftDraggerField = dr
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值