Android开发 - 掌握ConstraintLayout(四)创建基本约束
上一篇我们介绍了编辑器的基本使用,本文我们介绍创建基本的约束。
"约束"表示View之间的位置关系。当我们在ConstraintLayout布局中创建View时,如果我们没有添加任何约束,虽然在设计视图我们可以拖动它们到任意位置,但是运行后都会在左上角的原点位置,同时代码中也会给出警告:
所以我们必须确保我们的View都被添加了适当的约束。
我们常用的约束通常有两种,一种是相对父View的约束,一种是相对其它View的约束。
相对父布局的约束
创建相对布局的约束时比较简单,将对象方位的锚点拖动到对应方位的布局上即可。
这里我将这个按钮放到左上角,距父布局的左方和上方为50dp,在红色方框处可以调整具体的数值。
相对其它布局的约束
创建相对其它View的布局的形式就比较多样化了,结合相对父布局的约束,可以实现出非常复杂的界面。
当创建一个相对其它View的约束时,将锚点拖动到其它View上面的锚点即可。
创建父View约束时将锚点拖到父View边缘即可,创建与其它View约束时是将锚点拖到其它View的锚点上。
我们来举个应用的例子:
比如我们想要一个View相对另一个View居中显示,使用ConstraintLayout来实现就非常简单:
我们只需要将一个View(上图中的TextView)的左边锚点拖到目标View(上图中的Button)的左侧锚点,右边的锚点拖动到目标View的右侧锚点即可以实现。
总结
以前使用传统布局时基本上不愿意使用设计视图,布局时也基本上靠码代码。但是使用了ConstraintLayout后反而很少使用代码视图了,因为只需拖拖拽拽就可创建约束,实现复杂的布局,效率也相应地大大提升了。
下一篇:Android开发 - 使用ConstraintLayout(五)偏差(Bias)我们介绍偏差(Bias)的使用。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
仿Android新版手机QQ底部动态按钮效果
不知道细心的同学注意到没有,新版手机QQ的底部tab按钮特别有意思,当手放在上面的时候,这个按钮可以随手指的移动而改变形状,如下图: 于是我就仿写了一个,其实实现原理也挺简单的,最终的效果图如下: 第一步我们得下载QQ的apk文件,把里面的按钮图片资源解压出来,不过解压之后一看瞬间懵逼了,居然有这么多文件夹,而且还是混淆过后的: 还好机智的我试着搜索tab、menu、selected等关键词后才其中一个文件夹发现了这些图片: 原来每个tab按钮都是由1~2张图片拼在一起的,那我就封装成一个控件,然后仿写第一个按钮好了。 实现原理很简单,继承FrameLayout,添加1~2张图片,在onTouchEvent方法中移动。当然为了实现上述效果,两张图片移动的比例(或者阻尼值)是不同的,而且还要限制两张图片的移动范围。 @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); int action = event.getAction();...
- 下一篇
Android如何回调编码后的音视频数据
有开发者提到,在RTMP推送端的基础上,希望能回调编码后的音视频数据,便于开发者对接第三方系统,如GB28181. 为此,我们加了一下接口: 1. 设置音视频callback 对应接口: /** * Set Audio Encoded Data Callback. * * @param audio_encoded_data_callback: Audio Encoded Data Callback. * * @return {0} if successful */ public native int SmartPublisherSetAudioEncodedDataCallback(long handle, Object audio_encoded_data_callback); /** * Set Video Encoded Data Callback. * * @param video_encoded_data_callback: Video Encoded Data Callback. * * @return {0} if successful */ public native ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)