这玩意儿放了好久,总感觉有坑,另外比较懒,只会CV,太笨不想学
理由:小界面可以用呀
这他么还不学?等着猝死吧
然后,第一步 简单的试探一下
外层布局是ConstraintLayout,里边是小布局
额,看起来差不多
app:layout_constraintLeft_toRightOf="@id/tvflag"
那么这一句的意思就是标志物在左,去标志物的右边.
然后让右边的View matchparent,只需要向右加上约束,这里width设置为0dp ,另外如果width=wrap_content 那么就会 居中
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvflag"
标志物在上,去标志物的下边
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="parent"
app:layout_constraintRight_toLeftOf="parent"
二合一即为水平居中
app:layout_constraintTop_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="parent"
二合一即为竖直居中
如果要marginTop 那么必须先设置约束
app:layout_constraintTop_toTopOf="parent"
android:layout_margin="20dp"
android:layout_marginTop="20dp"
这么看来挺简单的 确实可以解决一些布局嵌套问题,,,
新东西当然不会这么low
All children of ConstraintLayout must have ids to use ConstraintSet
所有的子View 必须加Id
首先是俩个布局
默认 和 动画 俩个
默认
以我多年浸淫CV,这绝对和id 有关系
private Button butStart;
private Button butReset;
private ConstraintSet mConstraintSet1, mConstraintSet2, mConstraintReset;
private ConstraintLayout constraintLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
mConstraintSet1 = new ConstraintSet();
mConstraintSet2 = new ConstraintSet();
constraintLayout = findViewById(R.id.root_cons);
//把默认 constraintLayout 布局放到 mConstraintSet1 中
mConstraintSet1.clone(constraintLayout);
//把标定位置变换的 constraintLayout 布局放到 mConstraintSet2 中
mConstraintSet2.clone(this, R.layout.activity_main_anim);
}
private void initView() {
butStart = (Button) findViewById(R.id.butStart);
butReset = (Button) findViewById(R.id.butReset);
butStart.setOnClickListener(this);
butReset.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.butStart:
TransitionManager.beginDelayedTransition(constraintLayout);
mConstraintSet2.applyTo(constraintLayout);
break;
case R.id.butReset:
AutoTransition transition = new AutoTransition();
transition.setDuration(500);
TransitionManager.beginDelayedTransition(constraintLayout,transition);
mConstraintSet1.applyTo(constraintLayout);
break;
}
}
然后AutoTranstion 很显然是个子类,小赤佬,