* 使用场景:设置布局的时候,想通过ConstraintLayout实现滑块与文字同步移动
* 思路:ConstraintLayout在xml布局中有layout_constraintvertical_bias设置项能否找到一个功能类来完成?
* ConstraintLaout控件引入后可以看到 constraintLayout.setConstraintSet(ConstraintSet set);
* 关键操作是:ConstraintSet constraintSet.setVerticalBias();
函数参数:setVerticalBias(int viewId, float bias)
* [官网_ConstraintSet](https://developer.android.google.cn/reference/androidx/constraintlayout/widget/ConstraintSet?hl=en)
* 可以看到约束布局的方式 (使用第三种)
1. Manually
ConstraintSet c = new ConstraintSet(); c.connect(....);
2. from a R.layout.* object
ConstraintSet c.clone(context, R.layout.layout1);
3. from a ConstraintLayout
ConstraintSet c.clone(constraintLayout);
* 参考官网给出的代码:
思路整理如下:
ConstraintLayout mConstraintLayout;
1. ConstraintSet mConstraintSet1 = new ConstraintSet(); //创建对象
2. mConstraintSet1.clone(mConstraintLayout); //获取约束布局
3. TransitionManager.beginDelayedTransition;//位置移动动画设置
4. constraintSet.setVerticalBias(viewId, bias);
5. constraintSet.applyTo(mConstraintLayout);
6. mConstraintLayout.setConstraintSet(setContrainLayoutViewBias(R.id.tv_weight_value, bias));
* 提供一个伪代码供参考
```
ConstraintLayout ll_button_plus_weight;
ll_button_plus_weight.setConstraintSet(setContrainLayoutViewBias(R.id.tv_weight_value, bias));
//设置ContrainLayout布局bias位置
private ConstraintSet setContrainLayoutViewBias(int viewId, float bias) {
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(ll_button_plus_weight);
TransitionManager.beginDelayedTransition(ll_button_plus_weight);
constraintSet.setVerticalBias(viewId, bias);
constraintSet.applyTo(ll_button_plus_weight);
return constraintSet;
}
```
基本流程技术处这样了。