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

ConstraintLayout 之 Guideline、Barrier、Chains和Groups

Barrier是一个看不见的视图,其中包含您用来形成“Barrier”的观点。如果其中一个视图增长,则Barrier将其大小调整为所引用项目的最大高度或宽度。...Barrier可以是垂直或水平的,并且可以创建到引用视图的顶部、底部、左侧或右侧。 以下示例可以看出,当调整TextView的大小时,Barrier调整其大小和受限视图移动。 ?...Chains 链允许您控制元素之间的空间以及元素如何使用空间。要创建链,需要选择要组成链的一部分元素,然后右键单击“链”-“创建水平/垂直链”。 ?...不要把这与Android中的普通ViewGroups混淆。ConstraintLayout中的一个组仅包含对视图ID的引用,而不将组合中的视图嵌套。...这样一来,您可以设置组中控件的可见性仅通过设置组的可见性就行了,而无需设置每个视图的可见性。这对于诸如错误屏幕或加载屏幕的事情是有用的,其中一些元素需要一次更改其可见性。 添加组-如下: ?

1.3K50
您找到你想要的搜索结果了吗?
是的
没有找到

ViewStub延迟加载

在项目中,难免会遇到这种需求,在程序运行时需要动态根据条件来决定显示哪个View或某个布局,最通常的想法就是把需要动态显示的View都先写在布局中,然后把它们的可见性设为View.GONE,最后在代码中通过控制...View.VISIABLE动态的更改它的可见性。...这样的做法的优点是逻辑简单而且控制起来比较灵活。...的时候是将它指向的布局实例化并替换掉当前ViewStub本身(由此体现出了ViewStub“占位”性质),一旦替换后,此时原来的布局文件中就没有ViewStub控件了,因此,如果多次对ViewStub进行infalte,会出现错误信息...)或者当一个布局 包含另一个时,标签消除视图层次结构中多余的视图组。

1.6K10

如何处理手势冲突 | 手势导航连载 (三)

使用 SYSTEM_UI_FLAG_FULLSCREEN 这个系统 UI 可见性开关。...如果您的视图放置在一个滚动操作的容器 (如 RecyclerView) 中,那么请这么理解这个问题: 该视图是否完全或大部分位于手势交互区域中?...我们可以用来解决手势冲突的一种方法是,将出现冲突的视图移出手势导航交互区域。这对于屏幕底部附近的视图尤其重要,因为该区域是系统强制手势交互区域,并且应用无法在该区域使用热区切出 API。...因此,除了直接修改视图的边距,我们还可以修改布局,以避免出现空间浪费: △ 将进度条移到视图的顶部 在这里,我们将进度条移到了播放控件的顶部,完全移出了手势交互区域。...出现这种冲突时,我们就可以使用上面提到的手势区域排除 API 来解决。 手势区域排除 API 通常会在两个地方被调用: 当视图被布局时 (onLayout),或是当视图被绘制时 (onDraw)。

4.8K30

Android对so体积优化的探索与实践

3. so 优化内容分析 在讨论 so 优化内容之前,我们先了解一下 Android 构建工具(Android Gradle Plugin,下文简称 AGP)对 so 体积做的 strip 优化(移除调试信息和符号表...4.1 精简动态符号表 使用 visibility 和 attribute 控制符号可见性 可以通过给编译器传递 -fvisibility=VALUE 控制全局的符号可见性,VALUE 常取值为 default...使用 static 关键字控制符号可见性 在C/C++语言中,static 关键字在不同场景下有不同意义,当使用 static 表示“该函数或变量仅在本文件可见”时,那么这个函数或变量就不会出现在动态符号表中...,只会删除其动态符号表项,而不会删除其实现体。...在项目开发中,使用 static 关键字声明一个函数或变量“仅在本文件可见”是很好的习惯,但是不建议使用 static 关键字控制符号可见性:无法使用 static 关键字控制一个多文件可见的函数或变量的符号可见性

2.3K31

Android——卡顿优化布局篇(含学习资料分享)

它的两个主要属性:layout:必填属性, id属性; 我们还可以重写宽高、边距和可见性(visibility)这些布局属性。...Android提供的方案就是ViewStub,他是一个不可见的大小为0的视图,具有懒加载功能,存在于视图中,只有设置setVisibility()和inflate()方法调用后才会渲染填充视图,能为初始化加载...使用案例:进度条,加载网络失败,显示错误消息等等 它有以下三个重要属性: android:layout:ViewStub需要填充的视图名称,为“R.layout.xx”的形式; android:inflateId...不要急,其实是setVisibility()方法实际上在设置内部视图的可见性,而不是ViewStub本身。...不同设备版本API兼容问题 解决这些问题官方给了解决方案:使用四种级别控制是否硬件加速。 1.

70000

Android 8.0 功能和 API(翻译自Google官网)

指针捕获 某些应用(例如游戏、远程桌面和虚拟化客户端)将大大受益于鼠标指针控制。指针捕获是 Android 8.0 中的一项新功能,可以通过将所有鼠标事件传递到您的应用中焦点视图的方式提供此类控制。...系统也可以在视图丢失焦点时(例如,当用户打开另一个应用时)释放指针捕获。 应用类别 在适当的情况下,Android 8.0 允许每个应用声明其所属的类别。...系统 新的 StrictMode 检测程序 Android 8.0 添加了三个新的 StrictMode 检测程序,帮助识别应用可能出现错误: detectUnbufferedIo() 将检测您的应用何时读取或写入未缓冲的数据...音频播放控制 Android 8.0 允许您查询和请求设备产生声音的方式。对音频播放的以下控制将让您的服务更轻松地仅在有利的设备条件下产生声音。...蓝牙、WLAN、备份和安全性方面的新增控制选项使企业可以更精细地管理设备。网络操作组件日志记录帮助企业追查问题。

2.8K30

实现边到边的体验 | 让您的软键盘动起来 (一)

insets } 在这个例子中,我们获取到 系统视窗边衬区,然后更新视图的内边距,这是一个常见的应用场景。...在姗姗来迟了十年后,我们终于可以回答这个关于如何查看软键盘可见性的 StackOverflow 问题。 在 Android 中如何查看软键盘的可见性?...应用可以从任何视图获得一个控制器,然后我们就可以通过传入 IME 类型,并执行 show() 或者 hide() 函数来实现显示或隐藏软键盘: val controller = view.windowInsetsController...// 显示软键盘( IME ) controller.show(Type.ime()) // 隐藏软键盘 controller.hide(Type.ime()) 然而,这个控制器不单单能控制隐藏和显示软键盘...如果我们想实现一个浅色的状态栏背景并且搭配深色的内容,像右边显示的一样,我们也可以使用 WindowInsetsController。

25620

viewstub 的详细用法_pageinfo用法

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性控制。...这时就只能使用View的可见性控制了。 2. 想要控制显示与隐藏的是一个布局文件,而非某个View。...所以,如果想要控制某个View(如Button或TextView)的显示与隐藏,或者想要在运行时不断的显示与隐藏某个布局或View,只能使用View的可见性控制。...inflate并替换掉当前ViewStub本身(由此体现出了ViewStub“占位符”性质),一旦替换后,此时原来的 布局文件中就没有ViewStub控件了,因此,如果多次对ViewStub进行infalte,会出现错误信息

3.5K40

详细介绍安卓布局性能优化之(include 、merge、ViewStub)

标签主要用于辅助include标签,在使用include后可能导致布局嵌套过多,多余的layout节点或导致解析变慢(可通过hierarchy viewer工具查看布局的嵌套情况) 官方文档说明:merge用于消除视图层次结构中的冗余视图...上述场景,我们通常的解决方案就是:就是把可能用到的View先写在布局里,再初始化其可见性都设为View.GONE,然后在代码中根据数据动态的更改它的可见性。...虽然这样的实现,逻辑简单而且控制起来比较灵活;但是也存在一定的缺点耗费资源。...是一个不可见的,实际上是把宽高设置为0的View.效果有点类似普通的view.setVisible(),性能体验提高不少 第一次初始化时,初始化的是ViewStub View,当我们调用inflate...先来看看布局,一个是主布局,里面只定义二个ViewStub,一个用来控制TextView一个用来控制ImageView,另外就是一个是为显示文字的做的TextView布局,一个是为ImageView而做的布局

1.4K10

Gradle构建-从Eclipse到Studio介绍篇

导语 Android Studio是官方推荐的Android开发IDE,虽说Android提供了更多能提供效率的功能,相信对部分一直习惯Eclipse的开发者来说,刚切换过来难免会有“水土不服”的情况...当然,除了上面提到的两个视图,开发者还可以根据需要选择其它视图,如下图显示,切换到Problems目录视图后,显示当前app项目中有错误的源代码文件MainActivity,快速定位错误代码位置。...工具窗口:提供对特定任务的访问,例如项目管理、搜索和版本控制等。您可以展开和折叠这些窗口。 6....状态栏:显示项目和 IDE 本身的状态以及任何警告或消息 Message:Gradle构建过程的信息输出 Terminal:Android Studio集成命令行控制台,命令行操作Gradle。...结语 本文主要参照官方文档介绍主要功能区的使用,没有介绍更多的个性化例如样式、模板、快捷键,更多的探索参照Android的官网。探索 Android Studio

2.1K00

Android7.0版本影响开发的改进分析

出现一些常见错误 如,UnsatisfiedLinkError 典型修复方法: 1....使用应用本地版本来替代使用 libcrypto.so 中的 SSL_ctrl 符号 注解保留 Android 7.0在注解可见性被忽略时修复错误。这种问题将启用本不应被允许的运行时访问注解。...Android 7.0上的应用应能够正常处理配置变更,并且在后续启动时不会出现崩溃现象。...由于之前的Android版本中的一项错误,系统没有对主线程上的一个TCP Socket的写入操作严格检查。Android 7.0修复了这个系统错误。...更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图

83010

分享10个NodeJS相关的专业级工具

数据流的统一视图:Helios提供了一个统一的视图,展示了应用程序数据在各个组件之间的流动情况。开发人员可以轻松了解数据的传递路径和性能情况。...AdonisJS https://adonisjs.com/ AdonisJS是一个建立在Node.js上的功能丰富的Web应用程序框架,遵循MVC(模型-视图-控制器)架构模式。...尽管相对于Express来说比较新,AdonisJS提供了充分的文档和多样化的插件和扩展生态系统,支持创建强大和扩展的Web应用程序。 AdonisJS的特点包括: 遵循MVC架构。...AdonisJS采用MVC架构,将应用程序的逻辑分为模型、视图控制器,提供了一种组织良好和维护的开发模式,使开发人员能够更轻松地构建复杂的Web应用程序。 支持TypeScript。...虽然使用Node.js可能很容易上手,探索其庞大的支持工具生态系统对于发挥其潜力至关重要。

80520

2021年Android面试题及答案收集(不断更新中)

volatile只能让其被修饰的内容具有可见性,并不能保证它具有原子性,因为volatile仅能使用在变量级别,并不能对方法进行修饰, 有序性:即线程执行的顺序按代码的先后顺序执行,在Java内存模型中...Android内存泄漏及管理 内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用,出现out of Memory 的错误,比如申请了一个integer,给它存了long...Android设计模式之MVC MVC即Model-View-Controller,M是模型,V是视图,C是控制器,MVC模式下系统框架的类库被划分为模型(Model)、视图(View)、控制器(Controller...用户与视图交互,视图接收并反馈用户的动作,视图把用户的请求传给相应的控制器,由控制器决定调用哪个模型,然后由模型调用相应的业务逻辑对用户请求进行加工处理,如果需要返回数据,模型会把相应的数据返回给控制器...,由控制器调用相应的视图,最终由视图格式化和渲染返回的数据,一个模型可以有多个视图,一个视图可以有多个控制器,一个控制器可以有多个模型。

84120

Fragment时长统计那些事

而Fragment作为Android中页面的重要组成部分,其停留时长的统计就显得非常重要。...而Fragment则允许将Activity拆分成多个完全独立封装的重用的组件,从而构建出灵活的UI界面。...onResume :页面开始时间; onPause: 页面结束时间; 而Fragment不一样,Fragment是可以存在预加载和多层嵌套的行为的,同一时刻会有多个Fragment执行了 onResume方法,真正对于用户交互的可能就只有一个...方法就能判断当前页面的可见性如果Fragment又嵌入Fragmnent,则只有其本身的getUserVisibleHint方法来判断当前页面的可见性是不够的,会出现外层的Fragment不可见了,...tab,则 标签为EIRST的 fragment的可见性是不会发生变化的(仍是可见的),实际上,该fragment已经不可见了。

68330

PostgreSQL 的事务管理和并发控制机制解析

如果事务回滚或发生错误,可以利用回滚日志来撤消已经执行的操作,从而将数据库恢复到原始状态。 3....MVCC 的原理是为每个事务创建一个可见性视图,这个视图决定了在该事务中可以看到哪些数据版本。...每个事务在开始时会创建一个可见性视图,这个视图决定了在该事务中可以看到哪些数据版本。 当一个事务对数据进行修改时,实际上是在创建新的数据版本,而不是直接在原始数据上进行修改。...在重复读级别下,其他事务对数据的修改不会被读取,避免了脏读和不可重复读问题。 但在重复读级别下,仍然可能出现幻读问题。...重复读:适用于对数据一致性要求较高的场景,可以解决不可重复读问题。 串行化:适用于对数据一致性要求极高的场景,可以解决所有并发问题,性能较低。

8710

MySQL基础隔离性小结

出现读写冲突时,后访问的事务需等前一个事务执行完才继续执行。 事务隔离的实现 MySQL数据库会创建一个视图,访问时以视图的逻辑结果为准。这个快照(即视图)是基于整个库的。...这个视图数组和高水位,就组成了当前事务的一致性视图(read-view)。而数据版本的可见性规则,就是基于数据的 row trx_id 和这个一致性视图的对比结果得到的。...快照读与当前读 普通查询语句是一致性读(也常说是 “快照读” ),一致性读会根据 row trx_id 和一致性视图确定数据版本的可见性: 对于重复读,查询只承认在事务启动前就已经提交完成的数据; 对于读提交...对于“重复读”,基于锁机制并发控制的DBMS需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁”,因此可能会发生“幻读”。...(参考) MySQL默认是“重复读”(REPEATABLE-READ)级别,通过gap lock锁定索引记录之间的间隙从而消灭幻读,更准确的说: 在快照读的情况下,mysql通过mvcc来避免幻读。

65220

关于Android架构,你是否还在生搬硬套?

3.2 Android视图开发可以借鉴函数式编程思想 1. 模块化的意义何在?...1.3 Android如何做分层处理? 前端开发其实就是做数据搬运,再展示到视图中。...我先大致将它分为两个方面: 界面交互逻辑:视图层的交互逻辑,比如手势控制、吸顶悬浮等等都是根据业务需要实现的,所以严格来说这部分也属于业务逻辑。这部分业务逻辑一般在视图层实现。...开发者是人所以不可避免出现错误,此时可以将角色做一个反转由成熟的框架负责整个流程,程序员只需要在框架预留的扩展点上,添加跟自己的业务代码,就可以利用框架来驱动整个程序流程的执行,此过程为反转。...其实函数式编程的核心思想就是 门面模式 以及 迪米特法则 3.2 Android视图开发可以借鉴函数式编程思想 Android视图开发大都遵循如下流程:请求-->处理数据-->渲染UI,这一流程可以借鉴函数式编程

81910
领券