@MikkiMouse

ObjectAnimator — можно ли указать значения в процентах в xml?

Добрый день, столкнулся с проблемой при переводе анимации на objectAnimator, раньше было так:
<translate
        android:duration="400"
        android:fromXDelta="0%p"
        android:fromYDelta="0%p"
        android:toXDelta="0%p"
        android:toYDelta="100%p" />

Теперь выходит так:
<objectAnimator
        android:interpolator="@android:anim/accelerate_interpolator"
        android:propertyName="translationY"
        android:valueType="floatType"
        android:valueFrom="0.0"
        android:valueTo="1000"
        android:duration="400"/>


И что-то мне очень не нравится указывать конкретные значения, пробовал указывать от 0.0 до 1.0, но ожидаемого эффекта не было. Можно ли каким-то образом указывать значения в процентах?
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
Вообще ObjectAnimator жрет процентные значения, но для этого вам самому придется реализовать ф-и установки и получения значений для анимации. Например надо изменить длину FrameLayout с 0 до 25% от размера экрана, тогда будет что-то типо этого:
public class SlidingFrameLayout extends FrameLayout
{
    private static final String TAG = SlidingFrameLayout.class.getName();

    public SlidingFrameLayout(Context context) {
        super(context);
    }

    public SlidingFrameLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public float getXFraction()
    {
        int width = getWindowManager().getDefaultDisplay().getWidth();
        return (width == 0) ? 0 : getX() / (float) width;
    }

    public void setXFraction(float xFraction) {
        int width = getWindowManager().getDefaultDisplay().getWidth();
        setX((width > 0) ? (xFraction * width) : 0);
    }
}

После этого в xml-ке можно писать так:
<objectAnimator 
xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="xFraction" 
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="0.25" 
android:duration="500"/>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы