特定のチェックボックスがオンになっているときにビューを表示または非表示にする方法を2つ作成しました。 私は、チェックボックスとビューを初期化する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()メソッドで行われているようです。
これがどうして起こるのか誰にも分かりませんか?ビューが作成されるとすぐに、翻訳が考慮されていないように見えます。
ありがとうございます。私はそれのようなものを疑ったが、私はその点を見つけることができなかった。これは私を助けます。 –