Android - UI开发指南

news/2024/7/24 10:48:25 标签: android, ui, android studio

文章目录

    • 调试工具
      • 查看view的边界和margin、padding
      • 查看布局属性层次和控件的属性
    • 布局开发
      • 布局命名空间 app、android、tools
      • ConstraintLayout

调试工具

查看view的边界和margin、padding

  1. 开发者选项 > 显示布局边界
    开启这个选项后界面上每一个空间周围会多出来红色和蓝色的显示,具体每一个颜色的含义如下:

红色边线:一个view的上边,下边,左边,右边 边界线

蓝色边线:表明一个view的四个角

粉红色:表示margin,比如layout_marginLeft 、layout_marginBottom的距离

padding没有颜色(白色),蓝色角(表示view的边界)和内容之间会有一个白色空余部分,可以看的出来

查看布局属性层次和控件的属性

在这里插入图片描述
Android Studio右下角有个Layout inspector,点开后选择自己的手机上的进程就可以看到(目前自己尝试华为和荣耀手机上这个工具不生效,自己找了个VIVO手机可以正常使用)

布局开发

androidtools_19">布局命名空间 app、android、tools

xmlns:android=“http://schemas.android.com/apk/res/android
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”

布局开发中首个xml总是定义这三个命名空间,具体是什么意思呢?

  • tools

    可以在开发调试阶段使用,tools会覆盖android的所有属性,可以用来预览在ide中的效果,同时可以用来忽略ide的一些警告,运行的时候tools会被忽略
    比如我们在开发阶段要预览text的效果,tools:text=“XXX文本” 这样整个文本就不会被带到线上去了
    比如 tools:context=“.ConstantActivity” 可以告诉开发者,在预览阶段使用什么样子的主题

  • app:
    这个会导入当前项目下的自定义的属性,项目中你新引入的包里面的资源属性(dependency引入或者自己新定义的属性)可以通过app去访问到。

  • android
    xmlns:android android系统控件的原生属性,

ConstraintLayout

之前看到一个技术比较牛逼的同事的代码,用了这个布局,当时简单看了下,我靠,这么多参数,这个东西咋用呢,今天有空了学习下。

  • 位置属性使用
<!-- 基本方向约束 -->
<!-- 我的什么位置在谁的什么位置 -->
app:layout_constraintTop_toTopOf=""      我的顶部和谁的顶部对齐
app:layout_constraintBottom_toBottomOf=""   我的底部和谁的底部对齐
app:layout_constraintLeft_toLeftOf=""     我的左边和谁的左边对齐
app:layout_constraintRight_toRightOf=""    我的右边和谁的右边对齐
app:layout_constraintStart_toStartOf=""    我的开始位置和谁的开始位置对齐
app:layout_constraintEnd_toEndOf=""      我的结束位置和谁的结束位置对齐

app:layout_constraintTop_toBottomOf=""    我的顶部位置在谁的底部位置
app:layout_constraintStart_toEndOf=""     我的开始位置在谁的结束为止

使用上面的layout_constraintxxx_toXXXof,可以控制让自己的某个位置位于某个控件或者parent的某个方位

在约束两个控件的基线对齐时可以使用下面的属性:layout_constraintBaseline_toBaselineOf

  • 角度约束

我们可以使用下面的属性控制控件位于某个控件的指定角度的方向:

app:layout_constraintCircle=""         目标控件id
app:layout_constraintCircleAngle=""    对于目标的角度(0-360)
app:layout_constraintCircleRadius=""   到目标中心的距离
  • 百分比控制布局
app:layout_constraintHorizontal_bias=""   水平偏移 取值范围是0-1的小数
app:layout_constraintVertical_bias=""     垂直偏移 取值范围是0-1的小数

注意:在使用百分比偏移时,需要指定对应位置的约束条件

  • goneMargin

当当前控件依赖的目标控件状态变为GONE的时候,goneMargin会生效,其余情况gonemargin不会生效

  • 0dp的使用

GonstraintLayout中除了常用的描述控件大小的方式,我们还可以使用0dp,0dp需要配合相应的默认属性设置才能生效,layout_constraintWidth_default和layout_constraintHeight_default,取值可为spread、percent、wrap

  1. spread

    spread会占用所有符合条件的空间,且因为spread时默认的layout_constraintWidth_default,所以可以不写,在使用spread属性的时候,对应方向的start,end,或者top,bottom方向都要进行设置,不然扩展属性不会生效。

  2. percent

​ 按照父布局的百分比设置,取值的范围时0-1,表示view的大小和父类存在一定的关系

  1. wrap

    当宽度超过控件大小的时候,不会超过控件的显示区域,会被约束

  • 宽高比例

​ 浮点值,表示宽度和高度之间的比率;宽度:高度,表示宽度和高度之间形式的比率,且两个维度,width/height 中至少有一个维度的值是0dp,(没搞懂这个是干啥用的,直接写不行吗)

  • Chains

    链用于控制控件在水平或者垂直方向上的显示,可以用于控件在水平/垂直方向排列时使用

    chains一共有三个属性:spread(默认):均分剩余空间;spread_inside:两侧的控件贴近两边,剩余的控件均分剩余空间;packed:所有控件贴紧居中

    同时可以使用layout_constraintHorizontal_weight和layout_constraintVertical_weight用于设置权重,控制控件显示的权重

  • GuideLine和Barrier

    GuideLine和Barrier都会在代码中设置一个看不到的标识,guideline顾名思义,会设置一个标示line,barrier的话会根据配置,在代码中设置一个屏障,控制控件显示的边界。

    barrier https://www.jianshu.com/p/ed5183e44128

  • Group用来将多个控件设置到一个组中,控制显示/隐藏等公共属性

  • flow流式布局可以控制当元素个数过多形成多行的链时的显示规则,有none,chain,align等规则,同时,我们也可以控制每行显示的view的数量和每行上的view的对齐方式

  • ImageFilterButton和ImageFilterView可以用来实现圆角的view,使用roundPercent和round这两个属性,altSrc提供的资源将会和src提供的资源通过crossfade属性形成交叉淡化效果,同时还有很多色温亮度,饱和度,对比度的属性

参考: https://juejin.cn/post/6949186887609221133


http://www.niftyadmin.cn/n/1937.html

相关文章

【Linux学习】基础IO

目录前言一、C语言文件IO1. C语言文件接口以及打开方式2. 对当前路径的理解3. 默认打开的三个流二、 系统文件IO1. 系统接口openwritereadclose系统接口和库函数2. 文件描述符及其分配规则文件描述符文件描述符分配原则3. 重定向及dup2系统调用重定向标准输出和标准错误的区别d…

基于51单片机的信号发生器设计

目 录 引言... 1 1 课题背景意义及研究内容... 1 1.1 课题背景及研究意义... 1 1.2 课题研究内容... 2 2 设计方案选择... 2 2.1 系统控制芯片选择... 2 2.2 信号发生方式选择... 2 2.3 系统整体设计方案... 2 3 系统硬件设计... 3 3.1 单片机最小系统... 3 3.1.1单片机S…

C++11:新特性(11-20)

十一&#xff1a;委托构造函数 C11中&#xff0c;委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程&#xff0c;或这说自己的一些职责委托给了其他构造函数。 格式为&#xff1a; class data { public://构造函数data(int a,int b,int c):_a(a),_b(b),_c(c){}…

linux基本操作之gvim

文章目录 一、GVIM介绍及安装二、配置GVIM界面2.1、简单.vimrc配置使用2.2、功能齐全的.vimrc及插件配置2.3、gvim常用窗口编辑操作2.4、gvim三种工作模式三、gvim常用命令(均在命令模式下才可用)3.1、常用的光标移动快捷键3.2、删除操作(delete)以`d`为关键字3.3、改变和替…

对接抖音开发之售后消息实时通知订单部分退款

目录 前言 一、抖音开发中的售后消息 二、抖音运营反馈的业务需求分析 三、整体的业务开发思路 四、售后消息的代码开发 1.售后消息的使用 2.实时保存抖音平台过来的售后消息 3.具体的订单业务处理 总结 前言 这里主要是介绍一下抖音开放平台的这个售后消息的实际使用…

C和C++中的bitset

文章目录前言一. C中的bitset简述1.1 头文件1.2 声明定义1.2 成员函数和使用方法1.3 转换函数二、C语言基于数组实现bitset2.1 逻辑思路2.2 实现方法前言 C/C中没有bool类型&#xff0c;使用整形值表示bool类型占内存较多。C中推出了bitset类库来&#xff0c;可以使用一个bit位…

牛客训练3

C语言快速入门刷题指南 题目链接 牛客训练3【邀请码&#xff1a;hzu2022】 A、上下取整 #include<stdio.h> int main(){double a;scanf("%lf",&a); // 方法一:ceil()、floor(),flool()是向下取整函数&#xff0c;ceil()是向上取整函数 // print…

SAP 标准产品里使用 OData 服务的一些细节分享

本文写作动机 笔者在编写使用事物码 SEGW 开发 SAP OData 服务的系列步骤时,但凡遇到技术上一些疑难问题,喜欢去参照 SAP 标准产品里是如何使用 OData 服务的,不少问题都可以去参考 SAP 标准产品的 OData 服务实现细节来解决。 因此本文记录笔者在编写本教程的过程中,曾经…