특정 확인란을 선택했을 때보기를 표시하거나 숨기는 데 도움이되는 두 가지 간단한 방법을 만들었습니다. 체크 상자와 뷰를 초기화하는 Init 메서드와 체크 상태 변경 리스너 내부에서 호출되는 토글 메서드가 있으며 뷰 상태를 애니메이션으로 토글합니다.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);
}
그것은 알파 애니메이션으로 잘 작동하지만, 치료와 동일한 방법으로 초기화되지만, 번역 애니메이션 작은 문제가있다. 왜?
특히 확인란 상태가 변경 될 때마다 번역이 잘 작동하지만 체크 상자가 시작되면보기가 보이지 않도록 VERY FIRST 상태 변경시에만보기가 알파 애니메이션으로 표시되지만 번역 애니메이션은 수행하지 않습니다 . 보기가 방금 생성되었을 때 번역 상태는 초기화되지 않고, 알파 상태는 toggleViewVisibilityInit() 메소드에서 수행되는 것처럼 보입니다.
왜 이런 일이 발생해야하는지 알 수 있습니까? 보기가 작성되는 즉시 번역이 고려되지 않은 것처럼 보입니다.
감사합니다. 나는 그런 것을 의심했지만, 그 점을 발견 할 수 없었다. 이것은 나를 많이 돕는다. –