首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发之DrawerLayout实现抽屉效果

谷歌官方推出了一种侧滑菜单的实现方式(抽屉效果),即 DrawerLayout,这个类是在Support Library里的,需要加上android-support-v4.jar这个包。...使用注意点 1、DrawerLayout的第一个子元素必须是默认内容,即抽屉没有打开时显示的布局(如FrameLayout),后面紧跟的子元素是抽屉内容,即抽屉布局(如ListView)。...但是如果用的include加载的布局,会出现这个情况,那么如何解决?...解决办法:在include进的那个布局里面,添加clickable=true 2、除了抽屉的布局视图之外的视图究竟放哪里 左、右抽屉和中间内容视图默认是不显示的,其他布局视图都会直接显示出来,但是需要将其放在...与DrawerLayout一起使用可以实现通用的侧滑菜单,布局如下 <?xml version="1.0" encoding="utf-8"?

7.3K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    flutter上拉抽屉效果 flutter拖动抽屉效果

    ,也可配置关闭这个功能; 2、 抽屉关闭状态时,向上滑动,滑动过一定的高度时自动向上滑动打开,当没有滑动过一定的高度时,自动向下滑动,呈关闭状态; 3、 抽屉打开状态时,当滑动视图处于顶部时,向下滑动,...抽屉自动向下滑动关闭,可配置形状是否开启这个功能 4、 抽屉打开状态时,当向下滑动抽屉时,没有滑动到一定的距离时放开,抽屉会自动向上滑动回到打开状态,当滑动到一定的距离时放开,抽屉会自动向下滑动到关闭状态...; 5、 抽屉关闭状态时,向上轻扫抽屉,抽屉会向上滑动到打开状态,当抽屉打开状态时,向下轻扫,抽屉会向下滑动到关闭状态。..., child: DragContainer( ///抽屉关闭时的高度 默认0.4 initChildRate: 0.1, ///抽屉打开时的高度...默认0.4 maxChildRate: 0.4, ///是否显示默认的标题 isShowHeader: true, ///背景颜色

    3.4K51

    Android性能优化:过渡绘制解决方案

    在抽屉布局弹出时,抽屉布局是不透明的,也就是说抽屉布局背后挡住的内容布局是不需要绘制的,而网易云进行了绘制,导致抽屉布局所在区域的像素点绘制了多次。...使用来实现抽屉布局的。...取得抽屉视图的位置信息,如果抽屉视图可见、背景为不透明、抽屉高度和父布局高度一致时,取得抽屉视图左、上、右、下边缘在canvas中的位置信息。...在开发中,很多时候需要显示图片,在图片加载出来之前通常是需要显示一张默认图片的,很多时候会使用ImageView的background属性来设置默认背景图,而imageDrawable来设置需要加载的图片...这样会导致一个问题,当图片加载到页面后,默认背景图被挡住了,但是却任然需要绘制,导致过渡绘制情况的发生。 解决方案是把背景图和真正加载的图片都通过imageDrawable方法进行设置。 4.

    2.3K10

    Android性能优化:这些绘制优化你一定不能忽略!

    背景 一般应用程序 默认 继承的主题 = windowBackground ,如默认的 Light 主题: <item name="isLightTheme...,只有在该区域内才会被绘制,区域之外的都不绘制 实例说明:DrawerLayout 布局 = 左抽屉布局 [1639288442877132.jpg] @Override protected boolean...若是左抽屉布局 // 则取抽屉布局的右边界作为裁剪区的左边界、设置原主布局的裁剪区域,如上图裁剪区域 if (checkDrawerViewAbsoluteGravity(v, Gravity.LEFT...若是右抽屉布局 // 则取抽屉布局的左边界作为裁剪区的右边界、设置原主布局的裁剪区域 } else { final int vleft = v.getLeft(); if (vleft...通过clipRect()设置原主布局的显示范围 = 裁剪区域,使其仅在上图中的红框区域(即不阻碍抽屉布局的区域)显示 // 从而避免过度绘制 canvas.clipRect(clipLeft

    1.1K20

    Android性能优化:手把手带你全面了解绘制优化

    Window 背景 移除 控件中不必要的背景 减少布局文件的层级(嵌套) 自定义控件View优化:使用 clipRect() 、 quickReject() 优化方案1: 移除默认的 Window 背景...背景 一般应用程序 默认 继承的主题 = windowBackground ,如默认的 Light 主题: 抽屉布局 // 则取抽屉布局的右边界作为裁剪区的左边界、设置原主布局的裁剪区域,如上图裁剪区域 if (checkDrawerViewAbsoluteGravity...若是右抽屉布局 // 则取抽屉布局的左边界作为裁剪区的右边界、设置原主布局的裁剪区域 } else { final int...通过clipRect()设置原主布局的显示范围 = 裁剪区域,使其仅在上图中的红框区域(即不阻碍抽屉布局的区域)显示 // 从而避免过度绘制 canvas.clipRect

    75420

    绝了!华为技术专家居然把JVM内存模型讲解这么细致!

    内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。 JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。...iload_ 1 从局部变量表的第1号抽屉里取出一个数,压入栈顶,下一步直接在抽屉里实现+1的操作,而这个操作对栈顶元素的值没有影响 所以istore_ 2只是把栈顶元素赋值给a 表格右列,先在第1号抽屉里执行...栈内存默认最大是1M,超出则抛出StackOverflowError OutOfMemoryError 若Java虚拟机栈的内存大小允许动态扩展,且当线程请求栈时内存用完了,无法再动态扩展了...在JVM内存布局中,也是线程对象私有的,但是虚拟机栈“主内”,而本地方法栈“主外” 这个“内外”是针对JVM来说的,本地方法栈为Native方法服务 线程开始调用本地方法时,会进入一个不再受JVM约束的世界...而程序计数器、Java虚拟机栈、本地方法栈都是一个线程对应一个 5 方法区 5.1 定义 Java虚拟机规范中定义方法区是堆的一个逻辑区划部分,具体实现根据不同虚拟机来实现,如: HotSpot在Java7

    69641

    华为技术专家居然把JVM内存模型讲解这么细致「建议收藏」

    JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM高效稳定运行。不同JVM对于内存的划分方式和管理机制存在差异。结合JVM虚拟机规范,来探讨经典JVM内存布局。...作用 程序计数器(后文简称为 PCR)有两个作用: 字节码解释器通过改变PCR依次读取指令,实现代码的流程控制,如:顺序执行、选择、循环、异常处理 多线程情况下,PCR用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪了...,常见的i++和++i的区别,可以从字节码上对比出来 iload_ 1 从局部变量表的第1号抽屉里取出一个数,压入栈顶,下一步直接在抽屉里实现+1的操作,而这个操作对栈顶元素的值没有影响 所以istore...栈内存默认最大是1M,超出则抛出StackOverflowError OutOfMemoryError 若Java虚拟机栈的内存大小允许动态扩展,且当线程请求栈时内存用完了,无法再动态扩展了...Runtime类封装java应用运行时的环境,每个java应用程序都有一个Runtime类实例,使用程序能与其运行环境相连。

    35210

    Material Design — App bars: bottomApp bars: bottom

    在主屏幕上使用 bottom app bars ,其中包含 navigation menu control 和突出的操作(如FAB)。 在 bar 的另一侧至少可以放置一个,最多两个操作。...为展示主要操作,此 bottom app bar 在其主屏幕上使用 FAB 居中的布局。 查看消息时,bottom app bar 布局更改为“FAB 在尾部”布局以适应其他上下文操作。...当 bar 脱离FAB时,会恢复到默认的形状。 在返回到屏幕并重新附着 FAB 后,bar 重新获得了缺口形状。 ? ---- 海拔 Bottom app bar 的海拔高度为8dp。...底部的导航抽屉从底部的应用栏打开。 抽屉在底部应用程序栏前打开,并显示顶部应用程序栏以在达到完整高度时关闭抽屉。...Drawer 在 bottom app bar 前面打开,并显示 top app bar 以在达到完整高度时关闭抽屉。

    2.4K80

    Android入门教程 | Fragment 基础概念

    不过,当 Activity 正在运行(处于已恢复生命周期状态)时,可以独立操纵每个片段,如添加或移除片段。...如要为片段提供布局,必须实现 onCreateView() 回调方法,Android 系统会在片段需要绘制其布局时调用该方法。此方法的实现所返回的 View 必须是片段布局的根视图。...创建此 Activity 布局时,系统会将布局中指定的每个片段实例化,并为每个片段调用 onCreateView() 方法,以检索每个片段的布局。...注意:每个片段都需要唯一标识符,重启 Activity 时,系统可使用该标识符来恢复片段(也可以使用该标识符来捕获片段,从而执行某些事务,如将其移除)。...不过 ViewPager 为了防止滑动出现卡顿,有一个缓存机制,默认情况下 ViewPager 会创建并缓存当前页面左右两边的页面(如Fragment)。

    3.5K40

    活动可视化搭建系统——你的KPI被我承包了

    抽屉式 自上而下顺序排列,可以更换组件位置,但不能实现元素定位,没有层级概念,遇到复杂布局或者需要叠放元素时不够灵活,如果需要实现复杂页面的效果则需要引入复合UI组件的概念,它需要大量现成的UI组件。...下图只是一个复杂布局的例子,关注布局即可先不要管业务逻辑如何实现。 ? 关于自由度 结合布局方案聊一下关于可编辑自由度的问题,编辑自由度应该综合实际情况进行考量。...而且高自由度带来的是更多的技术的考量和实现成本,嵌套组件的层级规则、拖拽方案、组件定位等等….所以当你的团队技术实力和你能得到支持的资源不是那么充分时,也许抽屉式的半自由度方案更加适合你。...这个方案实现了组件库和公共方法的公用,同时针对每个页面做了分割,实现按需加载,保证页面性能。将网络请求node服务改为本地json,解决了并发的性能问题。...这样一来每个页面只要加载自身需要的即可。 1.删除默认配置2.单独导出chunk3.指定多入口页面单独进行配置chunk 优化后的页面速度 ?

    1.2K30

    【微前端】微前端——功能团队中缺失的一块拼图

    “布局服务”请求实现特定功能的所有包含部分调用服务的内容。布局服务的更高级实现并行执行查询 (4),支持故障转移和快速响应流。...当应用程序包含由许多独立尾部组成的页面时,服务器端集成非常有用,有些是用户特定的,有些是用户之间共享的,如电子商务网站通常具有的。...: primary – 表示设置页面响应代码的片段 timeout – 可选的片段超时时间(以毫秒为单位)(默认为 3000) async - 将片段推迟到正文标记的末尾 public – 防止 Tailor...使用 Single SPA 时,每个微前端都可以独立部署。另一个不错的功能是延迟加载代码。仅在需要时才加载特定的微前端包,这提高了应用程序的加载速度。...如何在代码中将前端应用程序标记为单个 SPA 微前端 如果要将前端应用程序标记为 Single SPA,第一步是准备一个主微前端文件并实现生命周期方法。

    94610

    OpenGL ES 3.0 | 统一变量和属性的概念与(在程序中的)获取流程、统一变量缓冲区对象详解、std140块规范、用 命名统一变量块 建立 统一变量缓冲区对象 的流程 和 相关API 和...

    如果统一变量在顶点着色器和片段着色器中均有声明, 则声明的类型必须相同,且在两个着色器中的值也需相同; 在链接阶段,链接程序将为程序中 与 默认统一变量块相关的 活动统一变量指定位置; 这些位置是 应用程序...用于 加载 统一变量的标志符; 链接程序 还将为与 命名统一变量块 相关的 活动统一变量 分配 偏移和跨距(对于数组和矩阵类型的统一变量) 获取统一变量 查询程序中 活动统一变量的列表(/ 数量...std140布局 保证使用 由OpenGL ES 3.0规范定义的明确布局规范 进行 特定包装; 因此,使用std140, 即可在不同的OpenGL ES 3.0实现之间 共享统一变量块; 【其他包装格式...(如下)可能使 某些OpenGL ES 3.0实现 以比std140布局 更紧凑的方式 打包数据】 ?...编程统一变量块时,应该注意如下的限制: 顶点或者片段着色器使用的最大活动统一变量块的数量 可以分别用带GL_MAX_VERTEX_UNIFORM_BLOCKS 或GL_MAX_FRAGMENT_UNIFORM_BLOCKS

    1.9K20

    Android 12的行为变更和版本兼容思路

    Android12平台行为更改:所有应用 用户体验 沉浸式手势导航改进 Android 12简化了沉浸式模式,使手势导航更加轻松,并且与其他活动(如观看视频和读书)的体验保持一致。...您的应用程序以Android 11或更低版本为目标,并在通知抽屉的顶部显示一个窗口。...这是因为,如果startActivity() 在窗口位于通知抽屉顶部的同时调用您的应用程序 ,则系统会自动关闭通知抽屉。 您的应用定位到Android 11或更低版本。...无法从服务或广播接收者创建Notification trampolines 当用户与通知交互时 ,某些应用程序会通过启动应用程序组件来响应通知点击,该组件最终会启动用户最终看到并与之交互的活动。...以前,自定义通知能够使用整个通知区域并提供自己的布局和样式。这导致了反模式,可能会使用户感到困惑或在不同设备上引起布局兼容性问题。

    4.6K10

    绘制优化

    ,或者对某些像素区域多次绘制,就会导致界面加载或者滑动时的不流畅、掉帧,对于用户体验来说就是 App 特别的卡顿。...DrawerLayout 就是一个很不错的例子,先来看一下使用 DrawerLayout 布局的过度绘制结果: 按道理左边的抽屉布局出来时,应该是和主界面的布局叠加起来的,但是为什么抽屉的背景过度绘制只有一次呢...,如果是的话,则遍历 DrawerLayout 的 child view,拿到抽屉布局,如果是左边抽屉,则取抽屉布局的右边边界作为裁剪区的左边界,得到的裁剪矩形就是下图中的红色框部分,然后设置裁剪区域。...右边抽屉同理。 这样一来,只有裁剪矩形内的界面需要绘制,自然就减少了抽屉布局的过度绘制。自定义控件时可以参照这个来优化过度绘制问题。...一般大家在写页面时都是通过xml写布局,通过setContentView、或LayoutInflater.from(context).inflate方法将xml布局加载到内存中。

    89910

    活动可视化搭建系统——你的KPI被我承包了

    抽屉式 自上而下顺序排列,可以更换组件位置,但不能实现元素定位,没有层级概念,遇到复杂布局或者需要叠放元素时不够灵活,如果需要实现复杂页面的效果则需要引入复合UI组件的概念,它需要大量现成的UI组件。...下图只是一个复杂布局的例子,关注布局即可先不要管业务逻辑如何实现。...而且高自由度带来的是更多的技术的考量和实现成本,嵌套组件的层级规则、拖拽方案、组件定位等等….所以当你的团队技术实力和你能得到支持的资源不是那么充分时,也许抽屉式的半自由度方案更加适合你。...lego针对业务组件的唯一原则就是不在系统内提供业务相关可配置入口,仅开放基础样式配置,如大小、主题色等。将权限回收至研发手中,每个业务组件在营销后台中配置数据,通过不同活动id进行区分渲染。...这个方案实现了组件库和公共方法的公用,同时针对每个页面做了分割,实现按需加载,保证页面性能。将网络请求node服务改为本地json,解决了并发的性能问题。

    68400

    使用Firefox开发工具做性能审计

    Performance-Focused Tools(性能工具) 在分析web应用程序的性能时,需要区分加载时性能和运行时性能。 加载时间性能回答了诸如“什么资源需要花费太多时间来加载?”...这个单线程负责运行浏览器正在执行的所有工作,如布局呈现、计算样式和收集垃圾。 还有一些方法,如setTimeout、诸如单击、加载和资源获取等事件,都是由单个线程执行的。...当您发现可以针对进一步优化的任何活动时,您可以使用其他子工具来获取关于在何处采取行动的详细信息。 确保遵循一些用户交互场景,并在分析过程中与应用程序UI的不同部分进行交互,特别是要优化的部分。...对于性能工具,瀑布图显示浏览器正在执行的活动和特定于浏览器的事件的分解,例如: 布局渲染或布局元素(也称为反射) 样式 动画帧请求 重绘或像素画 垃圾收集等。...您可以通过这个菜单过滤掉您希望在图表和视图中看到的单个活动,您还可以看到与不同操作相关的不同颜色。 例如,如果使用CSS动画,您需要关注的是诸如重新计算样式、应用样式更改、布局和绘制等活动。

    3.5K40

    【软件开发规范七】《Android UI设计规范》

    设计小图标时,使用最简练的图形来表达,图形不要带空间感。 ​编辑 活动区域 ​编辑 修饰区域 小图标尺寸是24dp X 24dp。图形限制在中央20dp X 20dp区域内。 ​...** 图片加载过程 ** ​编辑 图片的加载过程非常讲究,透明度、曝光度、饱和度3个指标依次变化,效果相当细腻。 ​...Progress & activity) ​编辑 ​编辑 线形进度条只出现在纸片的边缘 ​编辑 环形进度条也分时间已知和时间未知两种 ​编辑 环形进度条可以用在悬浮按钮上 ​编辑 加载详细信息时...(Navigation drawer) ​编辑 侧边抽屉从左侧滑出,占据整个屏幕高度,遵循普通列表的布局规则。...手机端的侧边抽屉距离屏幕右侧56dp。 ​编辑 侧边抽屉支持滚动。如果内容过长,设置和帮助反馈可以固定在底部。抽屉收起时,会保留之前的滚动位置。 ​

    5.1K20
    领券