Использование ObjectAnimator для создания анимации в Android

Как использовать ObjectAnimator для анимации свойства X представления, просто установив начальную позицию в файле анимации xml следующим образом:

<objectAnimator 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:valueType="floatType"
    android:propertyName="x"
    android:valueFrom="100.0" />

И конечное положение в макете (поскольку для моего случая конечное положение представления будет относительно других представлений в макете). Итак, я не могу получить более точные представления, выполнив:

<objectAnimator 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:valueType="floatType"
    android:propertyName="x"
    android:valueFrom="100.0"
    android:valueFrom="300.0" />

Это легко сделать, используя анимацию представления вместо анимации свойств и используя свойство fromXDelta.

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="1000"
        android:fromXDelta="100%p"/>
</set>

Это анимирует представление от 100% ширины экрана до положения, установленного в макете.


person HiddenDroid    schedule 26.02.2018    source источник
comment
Я не понимаю вашу точку зрения, чего именно вы хотите добиться?   -  person pskink    schedule 26.02.2018
comment
@pskink Я отредактировал вопрос, чтобы он был яснее. Что именно вы не понимаете в вопросе?   -  person HiddenDroid    schedule 26.02.2018
comment
просто используйте свое собственное свойство - например, назовите его hiddenDroid и просто создайте метод setHiddenDroid(float f) { ... и делайте все, что хотите, со своим представлением здесь   -  person pskink    schedule 26.02.2018
comment
Я не думаю, что вы поняли, что я имею в виду. Потому что setProperty() в этом случае не работает.   -  person HiddenDroid    schedule 26.02.2018
comment
запустите это, что setProperty вы имеете в виду?   -  person pskink    schedule 26.02.2018
comment
и, как мне грустно, делайте что хотите со своим представлением внутри setHiddenDroid - например: v.setTranslationX(v.getWidth() * f * 0.5f)   -  person pskink    schedule 26.02.2018
comment
@pskink Большое спасибо за все ваши ответы. Я попробую и вернусь к вам   -  person HiddenDroid    schedule 26.02.2018


Ответы (1)


это может помочь вам выполнить анимацию программно, когда вы получите окончательную позицию макета:

ObjectAnimator anim = ObjectAnimator.ofFloat(solution_board_layout, 
  "translationX", 0, 300);
  anim.setDuration(0);
  anim.start();
person Shilpy Samaddar    schedule 26.02.2018