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"/>
создаст размывающий интерфейс