Android - разница между offsetTopAndBottom, setTranslateY

Android View, похоже, имеет 2 метода, которые, похоже, выполняют очень схожие функции.

1] setTranslationX & setTranslationY
2] offsetLeftAndRight & offsetTopAndBottom

Может ли кто-нибудь сказать мне, как они отличаются? Каков сценарий, в котором можно использовать [1], но не [2]? и наоборот?

Ответ 1

offsetLeftAndRight() и offsetTopAndBottom() изменяют результат перехода макета, в то время как setTranslationX() и setTranslationY добавляют дополнительное смещение поверх результата макета, значение по умолчанию равно 0.

Одним из следствий является то, что смещение leftAndRight/TopAndBottom сбрасывается с каждым проходом макета (например, инициируется requestLayout()), в то время как перевод отсутствует.

Я понимаю, что offsetLeftAndRight() и offsetTopAndBottom() в основном полезны, если вы пишете свой собственный макет, а setTranslationX() и setTranslationY - это общие методы для настройки результата макета.

Ответ 2

в нормальных условиях обе функции являются произведением различных уровней api, теперь в сегрегации api должен быть atlest 16, но для смещения u может видеть их из более спокойного более раннего api, а разница между ними равна, settranslationx и y, дает нам эффект перемещения экрана, не требует aplha в нем, но для смещения его функции размытия, где альфа является ключевой точкой, пример перераспределения

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%p" android:toXDelta="0%p"
    android:duration="@android:integer/config_longAnimTime"/>

создаст иллюзию перемещения экрана слева направо, где смещение

<offset AlphaAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromalpha="0.0f"  android:toalpha=1.0f"
    android:duration="@android:integer/config_longAnimTime"/>

создаст размывающий интерфейс