ConstraintLayout使用 笔记总结

本文介绍Android ConstraintLayout的各种高级布局技巧,包括文本对齐、角度定位、控件可见性管理、尺寸约束、宽高比设置、占比布局及链式布局等,并讲解Barrier与Group控件的应用。

场景:实现文本对齐。属性:layout_constraintBaseline_toBaselineOf

  • Baseline指的是文本基线:比如两个TextView的高度不一致,但是又希望他们文本对齐,这个时候就可以使用layout_constraintBaseline_toBaselineOf

角度定位。属性:app:layout_constraintCircle ; app:layout_constraintCircleAngle ;app:layout_constraintCircleRadius

  • 角度定位指的是可以用一个角度和一个距离来约束两个空间的中心。

      <TextView
              android:id="@+id/TextView1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />
    
      <TextView
          android:id="@+id/TextView2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          app:layout_constraintCircle="@+id/TextView1"       //参照物
          app:layout_constraintCircleAngle="120"             //角度
          app:layout_constraintCircleRadius="150dp" />       //两点之间的距离
    

属性:goneMargin:用于约束的控件可见性被设置为gone的时候使用的margin值。在参照物被设置为gone的时候见效

    layout_goneMarginStart
    layout_goneMarginEnd
    layout_goneMarginLeft
    layout_goneMarginTop
    layout_goneMarginRight
    layout_goneMarginBottom

属性:偏移:layout_constraintHorizontal_bias ; layout_constraintVertical_bias

  • 区别与margin。这两个的取值是倍数:0~1.

属性: 尺寸约束的细节:

  • 使用wrap_content的时候,以使用下列属性来控制最大、最小的高度或宽度:
    • android:minWidth 最小的宽度
    • android:minHeight 最小的高度
    • android:maxWidth 最大的宽度
    • android:maxHeight 最大的高度
      当ConstraintLayout为1.1版本以下时,使用这些属性需要加上强制约束,如下所示:
    • app:constrainedWidth=”true”
    • app:constrainedHeight=”true”
  • 使用0dp,不推荐使用match_parent

属性:layout_constraintDimensionRatio 宽高比

  • 比如正方形: app:layout_constraintDimensionRatio=“1:1”
  • 可以在前面加W或H,分别指定宽度或高度限制。 例如:
    app:layout_constraintDimensionRatio=“H,2:3” //指的是 高:宽=2:3
    app:layout_constraintDimensionRatio=“W,2:3” //指的是 宽:高=2:3

属性:layout_constraintWidth_percent 设置在布局内部的占比。比如实现在布局内部的占比一半并且居中

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="textView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent="0.5"/>

</android.support.constraint.ConstraintLayout>

链: 当控件与控件之间相互约束的话,就可以将它们视为一条链。

  • 属性:layout_constraintHorizontal_chainStyle:改变整条链的样式,三种:
    • app:layout_constraintHorizontal_chainStyle=“packed” //打包起来:去掉了两两之间的间距
    • app:layout_constraintHorizontal_chainStyle=“spread” //(默认) 展开,两两之间平分间距
    • app:layout_constraintHorizontal_chainStyle=“spread_inside”// 展开,两两之间平分间距但是链的两端会贴边
      ps:垂直方向也有对应的三种

控件:androidx.constraintlayout.widget.Barrier 屏障,或者说参照线。

  • 据其包含的组件在某个方向最远的边缘确定。

  • 用于被参照物不确定(比如说宽高不确定,或者说显示隐藏不确定)的情况。将参照物进行打包。

    • 配合使用的属性:app:constraint_referenced_ids : 存放引用的参照物,用,隔开

        <androidx.constraintlayout.widget.Barrier
            android:id="@+id/barrier_end"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:constraint_referenced_ids="fl_screen_normal,btn_save"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />
      

控件:androidx.constraintlayout.widget.Group: 把多个控件打包,方便控制一整组控件的显示隐藏
- 配合使用的属性:app:constraint_referenced_ids : 存放引用的控件,用,隔开

Android开发学习过程中,掌握核心知识点和实践技巧对于提升开发能力至关重要。以下是一些关键领域的总结与建议: ### 活动(Activity)跳转 在Android中,活动之间的跳转可以通过显式或隐式意图实现。显式意图需要明确指定目标组件的类名,而隐式意图则依赖于系统的解析机制来决定哪个组件应该响应这个意图。 - **显式意图**示例: ```java Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); startActivity(intent); ``` 这种方式适用于应用内部组件间的直接调用[^3]。 - **隐式意图**通常用于启动其他应用程序中的组件,例如打开网页、发送邮件等操作,它不指定具体的组件名称而是通过动作(Action)、数据(Data)等信息让系统去匹配合适的组件。 ### Android Studio环境配置 使用Android Studio作为开发工具可以极大地提高效率。确保安装最新版本,并熟悉其功能如可视化UI编辑器、Gradle构建系统等。项目创建时需要注意选择正确的模板以及设置好JDK版本和Gradle插件版本以保证兼容性[^2]。 ### 用户界面设计 了解并熟练运用各种视图控件是基础。比如`Button`提供了多种方法来定制外观和行为,包括设置文本内容、背景颜色、字体大小等属性。此外,合理利用布局管理器(LinearLayout, RelativeLayout, ConstraintLayout等)能够帮助开发者创建灵活且适应性强的用户界面[^5]。 ### 屏幕适配策略 针对不同设备屏幕尺寸和密度进行优化是非常重要的一步。一种常见的做法是基于特定基准尺寸(如360dp宽度)计算出当前设备的密度值density=px/dp,然后根据该值调整相关参数以保持一致的显示效果[^4]。 ### 消息处理机制 理解Android的消息循环体系结构对于编写高效稳定的代码非常有帮助。这涉及到Handler, Looper, MessageQueue等概念,它们共同协作实现了跨线程通信的功能。 ```python # 示例代码仅为说明格式,实际为Java语言 public class MainActivity extends AppCompatActivity { private Handler mHandler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { // 处理接收到的消息 } }; // 发送消息示例 new Thread(new Runnable() { @Override public void run() { // 在子线程中发送消息给主线程 Message message = Message.obtain(); message.what = 1; mHandler.sendMessage(message); } }).start(); } ``` 以上这些方面构成了Android开发的基础框架,深入理解和实践将有助于进一步掌握更高级的主题如性能优化、网络请求管理、本地存储解决方案等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值