Android - UI开发基础

文章会随着日常使用持续更新

调试工具

查看view的边界和margin、padding

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

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

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

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

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

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

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

布局开发

布局命名空间 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

Android UI开发专题 Android UI开发专题(一) 之界面设计 近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的。本次专题分10节来讲述,有关OpenGL ES相关的可能将放到以后再透露。本次主要涉及以下四个包的相关内容:  android.content.res 资源类   android.graphics 底层图形类   android.view 显示类   android.widget 控件类   一、android.content.res.Resources   对于Android平台的资源类android.content.res.Resources可能很多网友比较陌生,一起来看看SDK上是怎么介绍的吧,Contains classes for accessing application resources, such as raw asset files, colors, drawables, media or other other files in the package, plus important device configuration details (orientation, input types, etc.) that affect how the application may behave.平时用到的二进制源文件raw、颜色colors、图形drawables和多媒体文件media的相关资源均通过该类来管理。   int getColor(int id) 对应res/values/colors.xml   Drawable getDrawable(int id) 对应res/drawable/   XmlResourceParser getLayout(int id) 对应res/layout/   String getString(int id) 和CharSequence getText(int id) 对应res/values/strings.xml   InputStream openRawResource(int id) 对应res/raw/   void parseBundleExtra (String tagName, AttributeSet attrs, Bundle outBundle) 对应res/xml/   String[] getStringArray(int id) res/values/arrays.xml   float getDimension(int id) res/values/dimens.xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值