ConstraintLayout小计

ConstraintLayout 可以减少布局的嵌套,也可以固定长宽比,一定程度满足了项目需求,有几点容易忘记的点,记录下来。

1.长宽比固定

constraintDimensionRatio来制定(如:app:layout_constraintDimensionRatio=”1:3”表示宽高比为1:3)这个属性生效需要以下条件:
1)left ,right ,top ,bottom四条边都需要约束,bottom的约束可以用baseline代替。
2)宽高至少有一个是0dp或者-1dp,如果都是0dp的则会以父布局能容下的最大范围显示。

2.GuideLine 的使用

Guideline是ConstraintLayout的Guideline辅助对象的实用程序类,该辅助对象不会显示在设备上,它被默认是View.GONE,而且不可改。另外,Guideline是专门为ConstraintLayout创建的,也就是它仅也只能用于ConstraintLayou布局。

 <android.support.constraint.Guideline
	android:id="@+id/guide_line_vertical"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:orientation="vertical"
	app:layout_constraintGuide_percent="0.5" />

如上为一个水平方向中间的分割线的示例,有以下几点说明:
垂直Guideline的宽度为0,高度为ConstraintLayout的高度
水平Guideline的宽度为ConstraintLayout的宽度,高度为0
GuideLine也可以认为是视图,其可以根据相对于布局边缘的dp或百分比,将GuideLine定位在布局中,位置确定有三种方式:

layout_constraintGuide_begin:指定与布局左侧或顶部的固定距离(dp)
layout_constraintGuide_end:指定与布局右侧或底部的固定距离(dp)
layout_constraintGuide_percent:指定与布局的宽度或高度的百分比
在Android Studio中,如果你想创建一个简单的计数器应用,可以使用`CountDownTimer`或者`Handler`来实现一个数字循环递增五次的逻辑。这里提供一个基于`CountDownTimer`的例子: 首先,创建一个新的Android项目,在`activity_main.xml`里放一个TextView来显示计数: ```xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/count_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> ``` 然后在`MainActivity.kt` (如果你使用的是Kotlin) 或 `MainActivity.java` (如果你使用的是Java) 中编写计数器部分: ```kotlin // Kotlin class MainActivity : AppCompatActivity() { private lateinit var countTextView: TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) countTextView = findViewById(R.id.count_text_view) val timer = object : CountDownTimer(5000, 1000) { override fun onTick(millisUntilFinished: Long) { runOnUiThread { countTextView.text = "当前次数: $countTextView.text + 1" } } override fun onFinish() { runOnUiThread { countTextView.text = "计数结束!" } } }.start() } } ``` ```java // Java import android.os.CountDownTimer; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView countTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); countTextView = findViewById(R.id.count_text_view); final CountDownTimer timer = new CountDownTimer(5000, 1000) { @Override public void onTick(long millisUntilFinished) { runOnUiThread(new Runnable() { @Override public void run() { countTextView.setText("当前次数: " + countTextView.getText().toString() + " + 1"); } }); } @Override public void onFinish() { runOnUiThread(new Runnable() { @Override public void run() { countTextView.setText("计数结束!"); } }); } }; timer.start(); } } ``` 这个代码会在5秒内每秒增加一次计数值,直到达到5。计数过程会放在主线程之外运行,因为更新UI需要在主线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值