Я работаю над добавлением анимации для виджетов в моем RecyclerView. Я хочу, чтобы изображение начиналось с левой стороны экрана и переводило его вправо, пока оно вращается. Если я попытаюсь сделать анимацию перевода самостоятельно, она отлично работает. Если я попытаюсь сделать анимацию вращения самостоятельно, она будет работать нормально. Если я попытаюсь запустить их обоих одновременно, это вообще не будет выглядеть правильно. Изображение движется по изогнутой траектории при переводе. Я думаю, что он может пытаться вращаться вокруг позиции, в которой закончится перевод, но это трудно сказать. Я использовал AnimationSet, чтобы попытаться заставить его работать, так как объединение обеих анимаций в один XML не сработало, но это не помогло.
translation_to_right.xml
<?xml version = "1.0" encoding = "utf-8"?>
<set xmlns:android = "http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta = "-100%"
android:toXDelta = "0%"
android:duration = "3000"
android:interpolator = "@android:interpolator/accelerate_decelerate"/>
/>
</set>
rotate.xml
<?xml version = "1.0" encoding = "utf-8"?>
<set xmlns:android = "http://schemas.android.com/apk/res/android">
<rotate
android:fromDegrees = "0"
android:toDegrees = "360"
android:pivotX = "50%"
android:pivotY = "50%"
android:duration = "3000"
/>
</set>
@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
Animation translateRight = AnimationUtils.loadAnimation(parentContext, R.anim.translation_to_right);
Animation rotate = AnimationUtils.loadAnimation(parentContext, R.anim.rotate);
AnimationSet animationSet = new AnimationSet(false);
animationSet.addAnimation(translateRight);
animationSet.addAnimation(rotate);
holder.imageView.startAnimation(animationSet);
...
Вы можете поместить View
в окружение ViewGroup
, например. a FrameLayout
, чтобы он помещался внутри даже при вращении. Затем примените поворот к View
и перевод к FrameLayout
.