почему я не вижу красный квадрат в MotionLayout?
Подскажите, пожалуйста, почему я не вижу красный квадрат в MotionLayout. Я программно делаю анимацию. Добавляю View в motionLayout, затем создаю transition. Что я не так делаю? Хочу программно добавлять изображения и программно управлять стартом и эндом transition.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MotionLayout motionLayout = (MotionLayout) findViewById(R.id.motionLayout);
MotionLayout.LayoutParams layoutParams = new MotionLayout.LayoutParams
(100, 100);
int count = 1;
View[] buttons = new View[count];
for (int i = 0; i < count; i++) {
buttons[i] = new View(MainActivity.this);
buttons[i].setId(getViewId(i));
buttons[i].setBackgroundColor(Color.RED);
motionLayout.addView(buttons[i], layoutParams);
MotionScene motionScene = new MotionScene(motionLayout);
MotionScene.Transition transition = createTransition(motionScene, motionLayout, buttons[i]);
motionScene.addTransition(transition);
motionScene.setTransition(transition);
}
}
private MotionScene.Transition createTransition(MotionScene scene, MotionLayout motionLayout, View view) {
int startSetId = View.generateViewId();
ConstraintSet startSet = new ConstraintSet();
startSet.constrainHeight(view.getId(),
50);
startSet.constrainWidth(view.getId(),
50);
startSet.connect(view.getId(), ConstraintSet.LEFT,
ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 0);
startSet.connect(view.getId(), ConstraintSet.RIGHT,
ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 0);
startSet.connect(view.getId(), ConstraintSet.TOP,
ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0);
startSet.applyTo(motionLayout);
int endSetId = View.generateViewId();
ConstraintSet endSet = new ConstraintSet();
endSet.constrainHeight(view.getId(),
50);
endSet.constrainWidth(view.getId(),
50);
endSet.connect(view.getId(), ConstraintSet.LEFT,
ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 0);
endSet.connect(view.getId(), ConstraintSet.RIGHT,
ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 0);
endSet.connect(view.getId(), ConstraintSet.BOTTOM,
ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 0);
endSet.applyTo(motionLayout);
int transitionId = View.generateViewId();
return TransitionBuilder.buildTransition(
scene,
transitionId,
startSetId, startSet,
endSetId, endSet);
}
Разметка
<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:id="@+id/constraintlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.motion.widget.MotionLayout
android:id="@+id/motionLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#7C7C7C"
app:layoutDescription="@xml/scene_01"
android:layout_margin="50dp"
tools:showPaths="true">
</androidx.constraintlayout.motion.widget.MotionLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
</MotionScene>