Я создал два коротких метода, чтобы помочь мне показать или скрыть представление, когда установлен определенный флажок. У меня есть метод Init, в котором я инициализирую флажок и представление, и метод toggle, который вызывается изнутри переключателя изменения статуса флажка и переключает состояние представления с помощью анимации.setTranslationY неправильно инициализирован
void toggleViewVisibility(final boolean b, final View v) {
v.setAlpha(b ? 0.0f : 1.0f);
v.setTranslationY(b ? v.getHeight() : 0);
if (b) {
v.setVisibility(View.VISIBLE);
v.animate().alpha(1.0f).translationY(0).setDuration(400);
} else {
v.animate().alpha(0.0f).translationY(v.getHeight()).setDuration(400).setListener(new Animator.AnimatorListener() {
@Override public void onAnimationStart(Animator animator) {}
@Override public void onAnimationEnd(Animator animator) { v.setVisibility(View.GONE); }
@Override public void onAnimationCancel(Animator animator) {}
@Override public void onAnimationRepeat(Animator animator) {}
});
}
}
void toggleViewVisibilityInit(final boolean b, final View v, final AnimateCheckBox c) {
v.setAlpha(b ? 1.0f : 0.0f);
v.setTranslationY(b ? 0 : v.getHeight());
v.setVisibility(b ? View.VISIBLE : View.GONE);
c.setChecked(b);
}
Он отлично работает с альфа-анимацией, но есть небольшая проблема с переводом анимацией, хотя они рассматриваются и инициализируются в точно так же. Зачем?
В частности, перевод работает отлично, когда изменяется статус флажка, но когда флажок начинает работать, так что вид невидим, только при статусе ОЧЕНЬ ПЕРВЫЙ вид открывается с альфа-анимацией, но не выполняет анимацию перевода , Похоже, что когда представление только что было создано, его статус перевода не инициализируется, а альфа-статус, хотя и выполняется в методе toggleViewVisibilityInit().
Кто-нибудь знает, почему это должно произойти? Похоже, как только создается представление, перевод не принимается во внимание.
спасибо. Я подозревал что-то подобное, но я не мог найти смысла. Это очень помогает мне. –